forを使って測定した情報すべてを纏めるにはどのようにすればいいでしょうか?
Show older comments
matlab R2020b(Windows)を使っております。
2値化した画像の1つのピクセルの回りに0がいくつあるかを調べる為に以下のプログラムを教えて頂きました。
img = imread('sen.jpg'); %画像読み込み
I = imbinarize(rgb2gray(img)); %2値化
I2=zeros(size(I));
for m=2:size(I,2)-1 %画像の左から右(2は横方向)
for n=2:size(I,1)-1
xx=I(n-1:n+1,m-1:m+1); %対象とする画像の範囲
num=length(find(xx==0)); %xxの中から0の所を探す
2I(n,m)=num;
end
end
numにそれぞれのピクセルの情報が入っているのかとおもったのですが、numの数値は0になっていました。
forを使っていますので、左上の一番最初に測定したものか、右下の一番最後に測定したものが入っているのか?と考えていますが、全てのピクセルの情報を纏めるにはどのようにすればよろしいでしょうか。
最終的に行いたいものは全てのピクセルの周りの情報を集め、周りに0が一定数以下のものはそのピクセルを膨張する、というものです。
そのために以下のプログラムを組もうと考えています。
se = strel('square',3);
kazu=find(num>2);
O = imdilate(kazu,se);
imshow(O);
また、使用する画像は以下になります。

説明が難しく申し訳ございません。
宜しくお願い致します。
Accepted Answer
More Answers (1)
Shunichi Kusano
on 17 Nov 2020
0 votes
こんにちは。
このコードですと各ピクセルにおいて周辺のzeroの数はnumでいったん計算され、それをI2に保存しているようです。全ての情報はI2に保存されてるのではと思います。
Categories
Find more on White in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!