# 木の輪郭検出について

9 views (last 30 days)

Commented: 蚊 石 on 11 Sep 2020

Shunichi Kusano on 24 Aug 2020

%グレースケール処理
a = rgb2gray(RGB); %グレースケール化
%ノイズ除去
J = imnoise(a,'salt & pepper',0.02);
Kaverage = filter2(fspecial('average',3),J)/255;
GRAY = medfilt2(J);
%Sobelフィルタ
Sobel_x = [-1 0 1; -2 0 2; -1 0 1]; %x方向
Sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; %y方向
%ノルム計算
Norm = zeros(size(GRAY,1),size(GRAY,2)); %ノルム格納配列
for i = 2:size(GRAY,1)-1 %行ループ
for j = 2:size(GRAY,2)-1 %列ループ
Localmat = [GRAY(i-1,j-1) GRAY(i,j-1) GRAY(i+1,j-1); GRAY(i-1,j) GRAY(i,j) GRAY(i+1,j); GRAY(i-1,j+1) GRAY(i,j+1) GRAY(i+1,j+1)]; %計算領域の輝度値
Norm(i,j) = norm([sum(sum(double(Localmat).*Sobel_x)),sum(sum(double(Localmat).*Sobel_y))]); %ノルム計算,格納
end
end
clear GRAY i j Sobel_x Sobel_y Localmat; %メモリ解放
%結果出力
Ave = mean(mean(Norm)); %ノルム平均値
Norm(Norm>=Ave) = 255; %平均値以上
Norm(Norm~=255) = 0; %平均値未満
Norm = uint8(Norm); %配列の型変換
imshow(Norm);
clear;

Shunichi Kusano on 26 Aug 2020

Show 1 older comment

Kenta on 8 Sep 2020
なるほど、ありがとうございます。おもしろそうな課題ですね！