0

私の仕事の 1 つは、16000 枚の画像からアリのコロニーの色を検出することです。それで、私はすでに青、ピンク、緑でうまくやっていますが、今はオレンジ色の検出を改善する必要があります. 私は画像処理の分野では初めてなので、少し難しいです。私がやったことと私の問題は何かをいくつか例に挙げました。

生画像:http://img705.imageshack.us/img705/2257/img4263u.jpg

オレンジ色の検出:http://img72.imageshack.us/img72/8197/orangedetection.jpg

緑色の検出: http://img585.imageshack.us/img585/1347/greendetection.jpg

selectPixelsAndGetHSV.m を使用して HSV 値を取得し、その後 colorDetectHSV.m を使用して同じ HSV 値を持つピクセルを検出しました。オレンジ色の検出を改善し、周囲のアリやひな全体を検出しないようにする方法を教えてください。

前もって感謝します!

function [K]=colorDetectHSV(RGB, hsvVal, tol)

HSV = rgb2hsv(RGB);

% find the difference between required and real H value:
diffH = abs(HSV(:,:,1) - hsvVal(1));

[M,N,t] = size(RGB);
I1 = zeros(M,N); I2 = zeros(M,N); I3 = zeros(M,N);

T1 = tol(1);

I1( find(diffH < T1) ) = 1;

if (length(tol)>1)
% find the difference between required and real S value:
diffS = abs(HSV(:,:,2) - hsvVal(2));
T2 = tol(2);
I2( find(diffS < T2) ) = 1;
if (length(tol)>2)
% find the difference between required and real V value:
difV = HSV(:,:,3) - hsvVal(3);
T3 = tol(3);
I3( find(diffS < T3) ) = 1;
I = I1.*I2.*I3;
else
I = I1.*I2;
end
else
I = I1;
end
K=~I;
subplot(2,1,1),
figure,imshow(RGB); title('Original Image');
subplot(2,1,2),
figure,imshow(~I,[]); title('Detected Areas');
4

1 に答える 1

0

ターゲット HSV 値として使用しているものは表示されません。これらが問題かもしれません。

あなたが提供した例では、色相が 30 から 40 の範囲の多くの領域が誤って選択されています。これらの領域はアリの体の部分に対応しています。選択したいオレンジ色の部分は、実際には色相が約 7 ~ 15 であり、アリと区別するのは難しくありません。

ターゲット値 (特に色相) を調整してみてください。より良い結果が得られるはずです。実際には、おそらく明るさと彩度を無視することもできます。この場合、色相で十分なようです。

于 2012-08-06T12:09:11.517 に答える