目標:我試圖使用視頻作爲輸入獲取虹膜的大小(寬度/半徑)。OpenCV虹膜檢測C++
我已經嘗試過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);
}
我不完全知道接下來該怎麼繼續。任何建議或意見表示讚賞。如果我錯過了任何信息,或者我對某事有點模糊,請讓我知道。非常感謝提前!
編輯:我應該更好地解釋我的應用程序的上下文,所以我很抱歉。我正在測量來自視頻輸入幀的瞳孔擴大。我已經知道瞳孔中心點的位置和瞳孔的半徑。我試圖找到虹膜的大小,以便可以使用從眼睛到相機的距離的變化來補償瞳孔大小的誤解值,因爲如果眼睛接近相機,瞳孔當然會出現較大而沒有擴張。我也可以嘗試其他方法來解釋這個問題,比如眼角,但我認爲,因爲我已經有了幾個瞳孔特徵,所以我將從虹膜開始。
再次,遺憾的是之前遺漏了這些細節。謝謝!
我已經知道霍夫圓變換我已經嘗試過了,它不執行不夠好,我用謝謝你雖然建議 – jmo
我遇事理解爲什麼這是關於HoughCircles的另一個問題的重複,如果有人可以請讓我知道爲什麼這是這種情況,這樣我就不會在將來創建重複的問題,如果事實上是wh在我做了。但是,我特別說,我不想使用HoughCircles。 – jmo
以上評論爲@Graviton。 – jmo