画像処理の入力について

조회 수: 3 (최근 30일)
Kaneko
Kaneko 2020년 1월 15일
댓글: Kaneko 2020년 1월 16일
こちらの動画を参考にして自分の持っている画像の二値化を行ったら、エラーが出て、「入力がlogical(バイナリ)の場合は2次元でなければなりません。」といったメッセージが出たのですが、どういう意味かわかりません。
また、アプリから「イメージの領域解析」を使ってファイルからイメージの読み込みを行ったのですが、「入力イメージのクラスはlogicalでなければなりません。」とでました。この「入力はlogical」の意味がよく分かりません。
よろしくお願いいたします。

채택된 답변

Kenta
Kenta 2020년 1월 15일
I=imread('onion.png');
Ig=rgb2gray(I);
b=imbinarize(Ig);
こんにちは、logicalは、1か0かの値を持っていて、真が偽かなどの判別に使われることもあります。
詳しくは、下のURLをご参照ください。またネットで、「matlab logical」と検索すればたくさん出てくるので適宜ご参照ください
アプリの件ですが、上のように、2値化した画像 b を読み込めば、うまくアプリを使用できます。
あらかじめ、自分で前処理をしておき、それをアプリに読み込ませるイメージと思います。
はじめのエラーのほうは、あまり状況が想像できずわかりません。ただ、下のURLを実際に動かしながら
変数の形などを見比べて、ご自身のものと比較すればわかると思います。
  댓글 수: 5
Kenta
Kenta 2020년 1월 16일
「ちなみにImgNが読み込む画像の数です.」と参考にされたWEBに書いています。
また、「関数または変数'Imgn'が認識されません。」とありますし、Imgnを定義していないためエラーが出ているのではないでしょうか。たとえば40枚処理したいなら、Imgn=40;と宣言すればよいです。
また、上のコードを拝見する限り、1.jpg...などと命名されているようなので、以下のようにすればよいと思います。おそらく下をもとにそちらのデータに合わせたり、保存をしたりする必要があるかもしれませんが、適宜変更いただければと思います。
ImgN=40;
S=imread('1.jpg');
imtool(rgb2gray(S))
figure, imhist(S);
figure;
for i=2:ImgN
%Image Read
Imgfilename=strcat(num2str((i)),'.jpg');
S=imread(Imgfilename);
Sg=rgb2gray(S);
sb1=imbinarize(Sg,0.4);imshow(sb1)
end
Kaneko
Kaneko 2020년 1월 16일
i=1:200とやってみたらできました。確かによく考えたら読み込む数も指定しなければいけませんよね。
いろいろと回答して頂き、ありがとうございました。

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 White에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!