画像解析で二次元化ができていない

17 views (last 30 days)
TOMONO
TOMONO on 21 May 2020
Commented: TOMONO on 21 May 2020
画像解析をして、図中に存在する楕円の長さの測定を試みています。
エラーが出てしまいます。
I = imread('crystal.jpeg');     %画像読み込み
BW = imbinarize(I);        %二値化
imshowpair(crystal,BW,'montage');     %画像表示
stats = regionprops('table',BW,'MajorAxisLength','MinorAxisLength')
としたときに下のようなエラーが出てしまいます。
警告: ndims(L) > 2 の場合、これらの測定値はサポートされていません: MajorAxisLength
MinorAxisLength 。
> In regionprops>NoNDSupport (line 1440)
In regionprops>PreprocessRequestedStats (line 1471)
In regionprops>InitializeStatStructures (line 1411)
In regionprops (line 228)
In gazo (line 4)
エラー: regionprops>InitializeStatStructures (line 1415)
プロパティが選択されていないか、または適用可能なものがありません。
エラー: regionprops (line 228)
[stats, statsAlreadyComputed] = InitializeStatStructures(imageSize, ...
エラー: gazo (line 4)
stats = regionprops('table',BW,'MajorAxisLength','MinorAxisLength')
二値化できていないのでしょうか。よろしくお願いいたします。
  2 Comments
Hiroki Okawa
Hiroki Okawa on 21 May 2020
Toolboxが手元にないのですが、まずは
size(I)
size(BW)
を実行してみてはいかがでしょうか。
おそらくjpeg画像がRGBチャンネルを持っているため配列のサイズが [M, N, 3]となっており、二値化した変数も[M, N, 3]になっているのではないかと予測しております。
TOMONO
TOMONO on 21 May 2020
ありがとうございます。
教えていただいた通りに実行したところできました。
解説付きでありがとうございます。

Sign in to comment.

Accepted Answer

Kenta
Kenta on 21 May 2020
clear;clc;close all
I = imread('strawberries.jpg'); %画像読み込み
I = rgb2gray(I);%このコードを加える
BW = imbinarize(I); %二値化
imshowpair(I,BW,'montage'); %画像表示
stats = regionprops('table',BW,'MajorAxisLength','MinorAxisLength') ;
こんにちは、Hiroki Okawaさまのおっしゃるようにregionpropsのために、グレースケール画像を入力しなければなりません。そのため、rgb2grayで入力画像を白黒(BW: black and white)にします。
  1 Comment
TOMONO
TOMONO on 21 May 2020
ありがとうございました。
matlab初心者の私にわかりやすく教えていただきありがとうございます。
無事に実行することができました!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!