/ / Ako môžem v Matlabe predstavovať súbor ZIP obrázkov (všetkých 32 x 32 pixelov) ako maticu, pričom každý stĺpec predstavuje jeden obrázok? [zatvorené] - polia, obrázky, matlab, matice

V programe Matlab, ako môžem predstaviť zip súbor obrázkov (všetkých 32x32 pixelov) ako maticu, kde každý stĺpec je jeden obrázok? [zatvorené] - matice, image, matlab, matica

Mám súbor ZIP s 10 000 obrázkami 32 x 32. Chcem vytvoriť maticu, kde každý stĺpec zodpovedá maticovému znázorneniu tohto obrázka vo vektorovej podobe.

Napríklad, ak U je moja konečná matica, stĺpec 1 U bude mať 1024 hodnôt a príkaz

imagesc(reshape(U(:,1),32,32))

dám prvý obrázok.

Vďaka!

odpovede:

0 pre odpoveď č. 1

Musíte sa postarať o počet kanálov. Za predpokladu, že máte súbory RGB, potom bude fungovať niečo ako nasledujúce.

U = zeros(1024, 10000, 3, "uint8");
for idx = 1:10000
filename = sprintf("file_%06d.png", idx);
data = imread(filename);
U(:,idx,:) = reshape(data,[],1,3);
end

Potom musíte napísať

imagesc(reshape(U(:,1,:),32,32,3))

Ďalšou možnosťou je vyhnúť sa pretváraniu pomocou 4-D poľa:

U = zeros(32, 32, 3, 10000, "uint8");
for idx = 1:10000
filename = sprintf("file_%06d.png", idx);
U(:,:,:,idx) = imread(filename);
end

imagesc(U(:,:,:,1))