2016-04-08 15 views
-1

と指の谷を検出:は、私はそのような手のバイナリイメージを持っているMatlabの

hand binary image

私は二本の指の間の谷を検出し、MATLAB関数を記述する必要があります。 パラメータは、バイナリイメージと2本の指の先端の座標です。

私は画像処理が新しく、開始方法はわかりません。

+1

非常に多くのアプローチがあります。あなたはGoogleを使っていくつかを試してみることができ、さらに具体的な質問をすることができます。 – RobAu

+0

私は2本の指の間の黒い領域の1点の位置を知っています。私の考えはこの点から始まり、谷を探索することでした(探索領域は白いピクセルと2本の指の先端のX座標で区切られています)。しかし、私はどのように谷ポイントを検索することができないのか分かりません。 –

+0

見てください: "凸欠陥"は、この種の手画像を扱うときに典型的に使用される方法です。 – RobAu

答えて

1

2つの入力ポイントの間の黒い領域を分離し、次にこの接続されたコンポーネントの最高点を見つけることをお勧めします。 次のアプローチを試すことができます(いくつかのパラメータを調整する必要があるかもしれませんが、それは良いスタートです)。

I = rgb2gray(imread('<your path>')); 

%input parameters - points which represents two finger tips. 
x1 = 408; y1 = 441; 
x2 = 454; y2 = 373; 

%binarize image 
I = im2bw(I); 

%noise reduction - close holes 
I2 = imclose(I,strel('disk',10)); 

%draw a line between p1 and p2 
ind = drawline([y1 x1],[y2 x2],size(I)); 
lineMat = zeros(size(I)); 
lineMat(ind) = 1; 

%adds the line to the image 
I2 = I2 | lineMat; 

%finds a point in the middle of the line 
[lineY, lineX] = ind2sub(size(I),ind); 
midX = lineX(ceil(length(ind)/2)); 
midY = lineY(ceil(length(ind)/2)); 

%finds a point which resides in the connected component which is between 
%the line and the two finger. 
xSeed = midX; 
ySeed = midY -5; 

%perform imfill operation, starting from (xSeed,ySeed), 
%in order to find the conected component in which the point (xSeed,ySeed) 
%resides. 
diffMat = imfill(I2,[ySeed xSeed])~=I2; 

%finding the highest point in this connected component 
[Y, X] = ind2sub(size(diffMat),find(diffMat)); 
minInd = find(Y==min(Y),1,'first'); 
yValley = Y(minInd); 
xValley = X(minInd); 

%presents result 
imshow(I);hold on; 
plot(x1,y1,'r.','MarkerSize',20); 
plot(x2,y2,'r.','MarkerSize',20); 
plot(xValley,yValley,'b.','MarkerSize',20); 

*ドローライン機能はdrawline webpageから取得されます。

最終結果(入力ポイントは赤、出力ポイントは青色)。 enter image description here

-1

それはちょうどアルゴリズムですが、すべてのこれらの機能は確かにMATLABで存在する:

  1. 計算凸包
  2. 計算違い:凸包マイナス元の形状。それからあなたはあなたが探しているすべての谷といくつかの小さなパターンを持っています。
  3. 接続されたコンポーネントのラベル。
  4. 小さなコンポーネントを削除します。それであなたは指の間にすべての谷があります。
  5. 次に、指先の座標を使用して1つを選択できます。
関連する問題