目標:ビデオを入力として使用して、虹彩のサイズ(幅/半径)を取得しようとしています。
HoughCirclesを試しましたが、虹彩の円があまり正確ではないようで、正確ではないようです。私がすでに持っている情報は、目の瞳孔の中心点とその半径です。
瞳孔の中心から外側に向かって勾配の大きさを測定するために、虹彩のエッジを見つけることが私に提案されました。次に、最大勾配の累積を使用してヒストグラムを使用して、虹彩の幅を見つけます。特定のポイントから始めて、これをどのように実装するかは正確にはわかりません。
目のROIでSobel演算子を使用して、以下に示す出力で勾配を取得しようとしました。
Sobel画像コード:
void irisFind(Mat gradMat, Point2i pupCenter, int pupRad){
imshow("original", gradMat);
Mat gradX;
Mat gradY;
Mat absGradX;
Mat absGradY;
GaussianBlur(gradMat, gradMat, Size(3, 3), 0, 0, BORDER_DEFAULT);
equalizeHist(gradMat, gradMat);
//Generate Gradient along x
Sobel(gradMat, gradX, CV_16S, 1, 0, 3, 1, 0, BORDER_DEFAULT);
convertScaleAbs(gradX, absGradX);
//Generate Gradient along y
Sobel(gradMat, gradY, CV_16S, 0, 1, 3, 1, 0, BORDER_DEFAULT);
convertScaleAbs(gradY, absGradY);
addWeighted(absGradX, .5, absGradY, .5, 0, gradMat);
imshow("Sobel", gradMat);
}
次の進め方がよくわかりません。任意の提案やコメントをいただければ幸いです。また、情報を見逃したり、漠然としたことをしたりした場合はお知らせください。よろしくお願いします!
編集:私は私のアプリケーションのコンテキストをよりよく説明する必要があったので、それをお詫びします。私はビデオ入力からのフレーム上の目の瞳孔散瞳を測定しています。瞳孔の中心点の位置と瞳孔の半径はすでにわかっています。私は虹彩のサイズを見つけようとしています。これは、目からカメラまでの距離の変化を使用して、瞳孔のサイズの誤った解釈値を補正できるようにするためです。目がカメラに近づくと、もちろん瞳孔が現れるからです。膨張せずに大きくなります。目の角など、これを説明する他の方法も試すかもしれませんが、私はすでにいくつかの瞳孔の特徴を持っているので、虹彩から始めると思いました。
繰り返しになりますが、前にこの詳細を省略して申し訳ありません。ありがとう!