MATLAB Answers

0

imbinarize​関数でエラーが出てし​まいます。

Asked by Nagae Ryoya on 19 Nov 2019 at 6:38
Latest activity Answered by Kazuya
on 19 Nov 2019 at 7:06
%%画像入力
kaki_img=imread('box_dark.jpg'); %画像読み込み
%kakiimg=imcrop(kakiimg)
figure(2)
imshow(kaki_img,'Border','tight','InitialMagnification','fit');
%%画像全体のセグメンテーション
kaki_red=kaki_img(:,:,1); %画像のセグメンテーション(赤要素検出)
figure(3)
imshow(kaki_red,'Border','tight','InitialMagnification','fit');
%%画像の二値化
kaki_th=kaki_red>180;
figure(4)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%二値化画像の穴埋め
kaki_th=imfill(kaki_th,'holes');
figure(5)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%二値化画像のクリーンナップ(周囲の白を除去)
cc1=bwconncomp(kaki_th);
main1=regionprops(cc1,'Area');
A=[main1. Area];
[~,biggest]=max(A);
kaki_th(labelmatrix(cc1)~=biggest)=0; %最大の塊となっている1の要素以外の1の要素を0にする
figure(6)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
BW=imbinarize(kaki_th);
figure(7)
imshow(BW,'montage')
のプログラムにおいて、以下のようなエラーが出てしまいます。
エラー: imbinarize
I は以下のいずれかのタイプが必要です:
uint8, uint16, uint32, int8, int16, int32,
single, double
実際の型は logical でした。
エラー: imbinarize>validateImage (line 262)
validateattributes(I,supportedClasses,supportedAttribs,mfilename,'I');
エラー: imbinarize>parseInputs (line 198)
validateImage(I);
エラー: imbinarize (line 134)
[I,isNumericThreshold,options] =
parseInputs(I,varargin{:});
エラー: sisaku (line 33)
BW=imbinarize(kaki_th);
BW = ~kaki_th;
を用いてみても、うまくいきませんでした。
どのように変更したらエラーはなくなりますか。

  0 Comments

Sign in to comment.

Products


Release

R2019b

1 Answer

Kazuya
Answer by Kazuya
on 19 Nov 2019 at 7:06
 Accepted Answer

エラー: imbinarize
I は以下のいずれかのタイプが必要です:
uint8, uint16, uint32, int8, int16, int32,
single, double
実際の型は logical でした。
とある通り、
BW=imbinarize(kaki_th);
の時点で kaki_th が 0/1 のデータ(logical) であり既に2値化されています。imbinarize を実行する必要が無い、、のでしょうか?

  0 Comments

Sign in to comment.