- 二値化は万能な方法が困難で色々検討が必要です(下記はimbinarize関数任せにしています)
- メモリに入らない程大量の画像は読み込めません。read関数で1枚ずつ処理するのが無難です
- 下記は2枚の画像をサンプルとしましたが「フォルダ下に含まれる画像」等の形で処理できます
fs = matlab.io.datastore.FileSet(["street1.jpg","coins.png"]); % サンプルは2枚だけ
imds = imageDatastore(fs);
Is = readall(imds) % 複数画像を読み込む
BWs = cellfun(@(x) imbinarize(im2gray(x)),Is,'uni',false) % 読み込んだ画像を二値化
As = cellfun(@(x) sum(x,'all'),BWs) % 二値化画像の白色部分の面積を A1, A2,.... ,Anといったような変数に入れる
AveArea = mean(As) % 面積の平均を出す