细胞识别图像处理项目总结
關于圖像處理方面的收獲:
五月中旬的時候接了個細胞檢測的活,要求識別白細胞、紅細胞、脂肪球、霉菌幾種
細胞,大致看了客戶發給我顯微鏡上的圖片,發現能做,于是就接了下來,客戶告訴
我最終的程序要是C++的編譯成DLL給他們的應用程序調用才可以,本人因為一直做
Java,做C++還是12年前畢業設計的時候做了圖像相關的東西。從那之后,做項目偶
爾也會搞點C++但是基本上就一直停留在Hello World的水平上。我的想法是先把算法
用Java實現,然后我找人合作幫忙把算法從Java翻譯成C++,經過大概一個月左右的
時間Java版本的算法已經實現,并且用客戶給我的那些測試圖片數據,發現除了白細
胞識別率有點低,其它的識別都還不錯,基本都在70%左右,而且陰性的檢測準確率
高達96%,已經滿足實際需要。其實做這個識別算法我是基于模板匹配方法,但是唯
一不同的時候我是先找到ROI區域,然后只對ROI區域去做模板匹配,這樣速度就非常
快,基本滿足了客戶要求。在做這個項目的過程中,自己對一些基礎的問題又有了近
一步的認知,對SMOOTH、先圖像梯度在灰度還是先灰度在梯度的區別都有了新的認
知,發現順序不同差別還是很大的,對圖像二值化、二值圖像的填充、腐蝕與膨脹、
開閉操作、邊緣提取等都更加的熟悉了。同時對霍夫直線檢測、二值圖像的連通區域
查找等算法也有近一步的認識,在特征提取方面自己先后嘗試了LBP、HOG、幾何距
灰度共生矩陣等又溫習和進一步理解應用。通過綜合運用這些知識,基于提取到的模
板數據、實現了對細胞的快速分類與識別。
關于編程方面的收獲:
我在學習圖像處理之初,就下定決心不去依賴任何庫,這樣做有好處也有壞處,好處
就是逼著自己去實現一些常見的圖像處理方法,壞處就工作效率比較低,特別是開始
階段,我在用Java做這些算法的時候也特別注意借鑒ImageJ中的代碼,能直接拿過來
用的,我基本都直接拿過來了,HOG是我自己用Java寫的,因為ImageJ中我沒發現
這個就導致我的Java算法在翻譯到C++的時候有很多選擇,可以用openCV等開源庫
可以那些API我也沒仔細看,心想找個人幫我翻譯成C++的就好了,不需要任何庫
畢竟我的Java版算法也是我自己實現的,不依賴任何庫,我估計的時間是一周左右
我很幸運的找到一個很好的C++哥們,他也是CSDN的一個熟人,花了兩周晚上的時
間我們把Java的算法轉成C++的了,然后編譯測試通過,改了幾個小問題就發現運行
結果跟Java沒有差別,這個讓我很高興,覺得幫我翻譯C++的哥們太給力了,希望我
們一直合作下去。
???????? 當然這個過程中我們也踩了不少坑,其中最大的一個就是我Java做的算法很多變
量都沒有初始化為0,到了C++上面就悲劇了,還有一些數組也沒有初始化就直接進行
像素或者統計操作,結果也很悲劇,都是很大的坑。費了我們不少精力。其中更有一
個很惡搞的問題,我定義的數字是字節類型的,結果里面的數據是INT的,長度就會溢
出,結果就很悲劇。我也學會一些簡單的C++知識,學會用vs2015搞東西,學會了用
CxImage這個庫來讀圖像文件和像素數據。復活了我一些VC++的知識。我記得我上次
用VC++的時候還是6.0,我這個跨度比較大。項目總結的時候那哥們還給我提幾點建議
這樣方面他把代碼轉到C++。一個很認真的哥們,他的建議:
對以后咱們合作中的Java代碼提兩點建議:
1.定義變量、數組時必須初始化。
2.邏輯層和視圖層分離,算法中只傳像素數組,
不要有BufferedImage對象及圖像讀定相關的操作,
這些都放到視圖層。對圖像的處理,其實就是對像素的處理。
那么處理函數的定義其實只需要傳入一個待處理的像素數組,
返回一個處理后的結果像素數組。Java定義可以為:
public abstract int [] process( int[] pixs,int width, int height);對應的c++定義為
virtual int process (EUINT32 * pSrcPix ,int nSrcW , int nSrcH , EUINT32 *& pDest , int & nDestW , int &nDestH ) = 0;關于我們:
如果能在一起做事情,一定要相互信任,特別是經濟上一定要相互講清楚,只有這樣
團隊才會相互信任,才有可能一起做更多的事情。要讓客戶看到自己的努力,認可自
己的勞動,成功就不會太遠了。現在我做Java,主攻圖像處理的各種算法,他主攻
C++,我們相互是對方的老師和良師。就在這個項目結束的時候我們又接一個新的圖
像處理的活,希望會一起走的更遠。
總結
以上是生活随笔為你收集整理的细胞识别图像处理项目总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【SaaS - Export项目】用户登
- 下一篇: mybtisset where tirm