複数の画像に対する処理の仕方がわかりません

조회 수: 6(최근 30일)
R
R 2022년 11월 17일
댓글: R 2022년 11월 17일
複数枚ある画像に対しての処理のやり方が分かりません。
下記の手順のことをやりたいと考えています。
複数画像を読み込む
読み込んだ画像を二値化
二値化画像の白色部分の面積を出す
面積を A1, A2,.... ,Anといったような変数に入れる
面積の平均を出す
ご教授いただけると幸いです。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 11월 17일
imageDatastore関数で取り扱う画像を集約し、readall関数で全画像を読み込み、cellfun関数で各画像を処理しています。
  • 二値化は万能な方法が困難で色々検討が必要です(下記はimbinarize関数任せにしています)
  • メモリに入らない程大量の画像は読み込めません。read関数で1枚ずつ処理するのが無難です
  • 下記は2枚の画像をサンプルとしましたが「フォルダ下に含まれる画像」等の形で処理できます
fs = matlab.io.datastore.FileSet(["street1.jpg","coins.png"]); % サンプルは2枚だけ
imds = imageDatastore(fs);
Is = readall(imds) % 複数画像を読み込む
Is = 2×1 cell array
{480×640×3 uint8} {246×300 uint8}
BWs = cellfun(@(x) imbinarize(im2gray(x)),Is,'uni',false) % 読み込んだ画像を二値化
BWs = 2×1 cell array
{480×640 logical} {246×300 logical}
As = cellfun(@(x) sum(x,'all'),BWs) % 二値化画像の白色部分の面積を A1, A2,.... ,Anといったような変数に入れる
As = 2×1
40943 22290
AveArea = mean(As) % 面積の平均を出す
AveArea = 3.1617e+04
  댓글 수: 1
R
R 2022년 11월 17일
ありがとうございます。
複数枚ある場合どうしたらよいのか分からなかったので解決しました。

댓글을 달려면 로그인하십시오.

추가 답변(0개)

범주

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!