How to concatenate/combine a list of images in one mat.file (convert picture 1 into picture 2)

2 ビュー (過去 30 日間)
BA
BA 2022 年 8 月 7 日
コメント済み: BA 2022 年 8 月 8 日
I tried a loop but it did not work:
for i = 1:size(df,3)
imshow(df(:,:,i))
end
  3 件のコメント
BA
BA 2022 年 8 月 8 日
編集済み: BA 2022 年 8 月 8 日
wow, thank you for this explanation. Picture 2 (someone's file) is a list of images so when I do 'imshow(dff(:,:,1))' it returns the first image but when I tried to do similar to my list of images it gives me an error. I think I need a way to make the images as 417x600x30, so the issues how to stack the 10 pages together as an array.
Yes, I am after number 2, the images are ultrasound (black and white) see attached as an example.

サインインしてコメントする。

回答 (1 件)

Walter Roberson
Walter Roberson 2022 年 8 月 8 日
What you are asking for is possible but not recommended. You are asking to open the variable browser on each field of the struct, and have the header be the same as the field name. In order to do that it is necessary to extract the fields from the structure into individual variables that have the same name as the field names, as the command to open the variable browser only supports plain variable names, not field references.
The below code does that extraction, but first it makes sure that doing so would not overwrite any variable of the same name.
The code cannot be put into a function because any variable created would disappear as soon as the function returned. (Unless perhaps something could be done around global variables or persistent variables or base workspace.)
The code should be improved to check for conflicts with the variable names used to manage the loop. Oddly, that part could be put into a function.
F_E_I_L_D_S = fieldnames(df);
K_N_O_W_N = whos();
B_O_T_H_ = F_E_I_L_D_S(ismember(F_E_I_L_D_S, K_N_O_W_N));
if ~isempty(B_O_T_H_)
error('cannot view fields without interfering with existing variables: %s', strjoin(B_O_T_H_, ', ')) ;
end
for I_N_D_X_ = 1 : length(F_E_I_L_D_S)
T_H_I_S_ = F_E_I_L_D_S{I_N_D_X_};
eval( T_H_I_S_ + "= df."+T_H_I_S+";")
openvar(T_H_I_S_)
end
Creating variable names dynamically is seldom a good idea.
Note that the variable browser will allow you to edit the values, but the changes will not be written back to the struct.
  3 件のコメント
BA
BA 2022 年 8 月 8 日
編集済み: BA 2022 年 8 月 8 日
Thank you for this. Picture 2 (someone's file) is a list of images so when I do 'imshow(dff(:,:,1))' it returns the first image but when I tried to do similar to my list of images it gives me an error. I think I need a way to make the images as 417x600x30, so the issues how to stack the 10 pages together as an array.
I tried you codes but I have the following error:
Error using cell/ismember (line 34)
Input A of class cell and input B of class struct must be cell arrays of character vectors, unless one is a
character vector.
BA
BA 2022 年 8 月 8 日
I used concatenate and it works :)
df =cat(3,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeConvert Image Type についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by