私は植物病気の検出に関するプロジェクトを行っています。私は葉の画像から病気の部分を抽出する必要がありますが、k-meansを使って病気の部位を正確に分けることはできません。具体的には、葉の残りの部分は、病変部分がセグメント化された状態で画像上に見える。ここでoriginal imageimage after separating diseased partsmatlabでk-meansクラスタリングを使って正確なクラスターを得るには
私はKクラスタリングを意味使用のみ病変領域を抽出する
b=imread('12.jpeg');
G=fspecial('gaussian',[200 250],1);
Ig=imfilter(b,G,'same');
figure,imshow(Ig);
conversionform = makecform('srgb2lab');
lab_img = applycform(Ig,conversionform);
figure,imshow(lab_img);
ab = double(lab_img(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);
nColors = 2;
[cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...,
'Replicates',3);
pixel_labels = reshape(cluster_idx,nrows,ncols);
figure, imshow(pixel_labels,[]), title('image labeled by cluster index');
segmented_images = cell(1,3);
rgb_label = repmat(pixel_labels,[1 1 3]);
for k = 1:nColors
color = lab_img;
color(rgb_label ~= k) = 0;
segmented_images{k} = color;
end
figure, imshow(segmented_images{1}), title('objects in cluster 1');
figure, imshow(segmented_images{2}), title('objects in cluster 2');
e=segmented_images{1};
figure,imshow(e);
conversionform = makecform('lab2srgb');
new_image=applycform(e,conversionform);
figure,imshow(new_image);
を書かれているコードである:ここで病変部を抽出した後、元の画像との画像です。誰かが私にこれを手伝ってもらえれば幸いです。私はmatlab 2009aを使用しています。ここで
ユニットシグマで初期フィルタのサイズを[200 250]にするのはなぜですか?あなたは 'imgaussfilt'について知っていますか?なぜ2つの色でセグメント化するのですか?コードに1つのコメントが含まれていないことをご存知ですか?結果を再現できるように元画像のみを投稿してください。 – Sheljohn
@ Sh3ljohn私は元の画像だけを掲載しました。 – Kashish
あなたの質問に答えた場合は、下のポストに答えを記入してください。 – Sheljohn