ファイルにある画像を​すべて読み取り,画像​を処理し,処理した結​果を配列として出力,​結合させて一つに出力​する.

2 visualizaciones (últimos 30 días)
優太
優太 el 9 de Jul. de 2024
Editada: 優太 el 12 de Jul. de 2024
matlabでいままでやっていた画像処理を自動化しようと考えています.
matlabを使いはじめて数週間の初心者なのでご指導のほどよろしくお願いいたします。
現状フォルダの中の画像ファイルを枚数ぶん読み取って画像処理(二値化,領域解析)をしてデータを吐き出すところまでは出来ています.
現状画像処理部分を枚数文書いて処理を行っていますが,枚数がたくさん増えたとき簡単に変えられないので,for文などで簡略的に処理する方法を教えて頂きたいです.よろしくお願いいたします。
close all; % close all figures
clear; % clear all variables
clc; % clear the command terminal
%フォルダから画像読み取り
foldername = "photo";
im_list=dir(foldername);
file_name={im_list.name};
file_name = file_name(~ismember(file_name, {'.', '..'}));
%画像処理の部分
I=imread(fullfile(foldername, file_name{1}));
I_8bit = im2uint8(I);
[BW,maskedImage] = segmentImage(I_8bit);
[BW_out,properties] = filterRegions(BW);
properties2 = struct2table(properties);
d_data1 = properties2.EquivDiameter;
以下この処理を画像の枚数文処理しています.
最終的には縦に結果を結合させてまとめてエクセルに出力しています.(今回は20枚)
d_total = vertcat(d_data1,・・・d_data20); 
現状画像処理部分を枚数文書いて処理を行っていますが,枚数が増えたとき簡単に変えられないので,for文などで簡略的に処理する方法を教えて頂きたいです.よろしくお願いいたします。

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 9 de Jul. de 2024
Editada: Atsushi Ueno el 9 de Jul. de 2024
>for文などで簡略的に処理する方法を教えて頂きたいです
画像処理の部分を for 文に入れ、画像処理結果をセル配列に入れれば枚数分処理が回ります。
foldername = fullfile(toolboxdir('nnet'),'nndemos','nndatasets','DigitDataset','5');
im_list = dir([foldername, '/*.png']); % 手で書いた"5"のPNG画像(全部28x28)が1000枚
for n = 1:size(im_list,1)
% 画像処理の部分をforで回す(めんどいから何も書かない)
I{n} = imread(fullfile(im_list(n).folder, im_list(n).name));
end
d_total = vertcat(I{:}) % 1000枚の28x28画像を縦に並べた
  1 comentario
優太
優太 el 11 de Jul. de 2024
簡略化して処理することが出来ました,いままでcell配列を全く使いこなせていなかったのでとても勉強になりました.ありがとうございました.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre ビッグ データの処理 en Help Center y File Exchange.

Productos


Versión

R2024a

Community Treasure Hunt

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

Start Hunting!