0
私は瞳孔追跡に取り掛かり始めました。私は瞳孔のためにいくつかの閾値をつけたが、依然として必要なほど正確ではなかった。以下は私の現在の閾値処理画像瞳孔(アイトラッキング)の閾値処理 - OpenCV with C++
現在の閾値の画像
がある私は、好ましくは、輪郭だけ瞳を見たいのですが、残念ながら、私は他のノイズを参照してください。以下は、私が唯一の瞳を追跡するために、私の仕事のための最高のしきい値アプローチを知りたい私のコード
int main(int argc, char** argv)
{
Mat src, src_gray, src_bw_glint, src_bw_iris, dst, dsti;
int threshold_value1 = 130;
int threshold_value2 = 30;
int const max_BINARY_value = 255;
VideoCapture cap(1); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat frame;
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
int p = 0;
for(;;)
{
cap >> src; // get a new frame from camera
/// Convert it to gray
cvtColor(src, src_gray, CV_BGR2GRAY);
Mat drawing = Mat::zeros(src_gray.size(), CV_8UC3);
/// Reduce the noise so we avoid false circle detection
GaussianBlur(src_gray, src_gray, Size(9, 9), 2, 2);
namedWindow(" Demo_Gray", CV_WINDOW_AUTOSIZE);
imshow(" Demo_Gray", src_gray);
//Threshold
threshold(src_gray, src_bw_iris, threshold_value2, max_BINARY_value, 1);
int morph_size = 5;
Mat element = getStructuringElement(MORPH_ELLIPSE, Size(2*morph_size + 1, 2*morph_size+1), Point(morph_size,morph_size));
cout<<element;
morphologyEx(src_bw_iris, dst, MORPH_DILATE, element,Point(-1,-1), 1);
//imshow("Open Image", dst);
morphologyEx(dst, dsti, MORPH_TOPHAT, element,Point(-1,-1), 10);
//imshow("TopHAt Image", dsti);
morphologyEx(dsti, dsti, MORPH_DILATE, element,Point(-1,-1), 1);
imshow("TopHAt Image", dsti);
findContours(dsti, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
for(int i = 0; i< contours.size(); i++)
{
//Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255));
Scalar color = Scalar(p, 255, p);
drawContours(drawing, contours,i, color, 2, 8, hierarchy, 0, Point());
// circle(drawing, mc[i], 4, color1, -1, 8, 0);
imshow("Drawing", drawing);
}
if (waitKey(1) == 'q') {
break;
}
}
return 0;
}
です。また、私に教えてください、あなたが思うなら、これは私がやったよりもはるかに簡単にすることができます。
試みは、各オブジェクトのプロパティを見つけると専用ディスクに最も類似しているものを残すために – Spektre
があなたのしきい値を下げる(例えば 'set_pixel_area/bounding_box_area'比は4'/PI'に近いはずです)。瞳孔は130よりずっと暗いです。 またはhttps://pdfs.semanticscholar.org/3260/30b941d44ffe6ec33f1b20b5897c4f198f7b.pdf – Piglet
しきい値を下げて、_HoughCircles_を使用してみてください。 –