画像処理の入力について
9 views (last 30 days)
Show older comments
こちらの動画を参考にして自分の持っている画像の二値化を行ったら、エラーが出て、「入力がlogical(バイナリ)の場合は2次元でなければなりません。」といったメッセージが出たのですが、どういう意味かわかりません。
また、アプリから「イメージの領域解析」を使ってファイルからイメージの読み込みを行ったのですが、「入力イメージのクラスはlogicalでなければなりません。」とでました。この「入力はlogical」の意味がよく分かりません。
よろしくお願いいたします。
0 Comments
Accepted Answer
Kenta
on 15 Jan 2020
I=imread('onion.png');
Ig=rgb2gray(I);
b=imbinarize(Ig);
こんにちは、logicalは、1か0かの値を持っていて、真が偽かなどの判別に使われることもあります。
詳しくは、下のURLをご参照ください。またネットで、「matlab logical」と検索すればたくさん出てくるので適宜ご参照ください
アプリの件ですが、上のように、2値化した画像 b を読み込めば、うまくアプリを使用できます。
あらかじめ、自分で前処理をしておき、それをアプリに読み込ませるイメージと思います。
はじめのエラーのほうは、あまり状況が想像できずわかりません。ただ、下のURLを実際に動かしながら
変数の形などを見比べて、ご自身のものと比較すればわかると思います。
5 Comments
Kenta
on 16 Jan 2020
「ちなみに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
More Answers (0)
See Also
Categories
Find more on 基本的な表示 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!