MATLAB Answers

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

3 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)