血管增強新思路和存在的問題

新思路和存在的問題

在翻看以前找到的論文的時候看到了有趣的文章
《Low-Cost Hand Vein Pattern Recognition 》裏面給出這樣的效果圖
那麼這個效果對於我來說是不錯的。雖然解決的問題不一樣,但是很有啓發。繼續探索,它指向了另一篇文章(核心算法)
《A Direction-Based Vascular Pattern Extraction 》
這篇文章的核心是使用這樣的核來進行濾波

 

離散狀態:

 

 

 
濾波(卷積)

 

 

能夠得到這樣的結果(依然是局部的),a和f分別爲最初和最後結果

 

 


 

 

爲了嘗試實現這個效果,我做了以下實現
   
 //構建核
    Mat k11 = Mat(1,11,CV_64FC1,Scalar(0));
    Mat k17 = Mat(1,17,CV_64FC1,Scalar(0));
    k11.at<double>(0,0) = -1.0/(11*17);
    k11.at<double>(0,1) = -1.0/(11*17);
    k11.at<double>(0,2) = 2.0/(11*17);
    k11.at<double>(0,3) = 4.0/(11*17);
    k11.at<double>(0,4) = 16.0/(11*17);
    k11.at<double>(0,5) = 32.0/(11*17);
    k11.at<double>(0,6) = 16.0/(11*17);
    k11.at<double>(0,7) = 4.0/(11*17);
    k11.at<double>(0,8) = 2.0/(11*17);
    k11.at<double>(0,9) = -1.0/(11*17);
    k11.at<double>(0,10)= -1.0/(11*17);
          
    k17.at<double>(0, 0) = -1.0/(11*17);
    k17.at<double>(0, 1) = -1.0/(11*17);
    k17.at<double>(0, 2) = -1.0/(11*17);
    k17.at<double>(0, 3) = -1.0/(11*17);
    k17.at<double>(0, 4) = -1.0/(11*17);
    k17.at<double>(0, 5) = 2.0/(11*17);
    k17.at<double>(0, 6) = 8.0/(11*17);
    k17.at<double>(0, 7) = 16.0/(11*17);
    k17.at<double>(0, 8) = 32.0/(11*17);
    k17.at<double>(0, 9) = 16.0/(11*17);
    k17.at<double>(0,10) = 8.0/(11*17);
    k17.at<double>(0,11) = 3.0/(11*17);
    k17.at<double>(0,12) = -1.0/(11*17);
    k17.at<double>(0,13) = -1.0/(11*17);
    k17.at<double>(0,14) = -1.0/(11*17);
    k17.at<double>(0,15) = -1.0/(11*17);
    k17.at<double>(0,16) = -1.0/(11*17);
//使用sepFilter2D進行卷積
sepFilter2D(tmp,tmp,CV_8UC1,k11.t(),k17)

 

但是結果很差,根本對不上
原圖

 

 

結果(普遍變黑,直方圖均衡不能提高效果):理想結果

 

 

首先讓我驚訝的是這個結果是不錯的,要知道,原圖中黑色的是有效區域,而在結果中使用白色標註有效區域。這是如何做到的?這種結果和我對核心的使用有偏差。特別是原文中爲了方便DSP程序設計,採用了很多int值,在修改代碼的過程中,需要注意哪些?最後,這篇文章的效果是否是正確的?這種效果是否能用用於血管增強?
爲此做一下工作:
1 核的問題 寫出問題所在,是不是我理解錯了,放在answeropencv以及羣裏面和大家討論;
2 查看這篇文章的引用文章,看能否和相關作者聯繫;
3 從現有的資料入手,思考它這裏體現出的原理,看是否能夠有其他方法實現;以及  conventional methods
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章