1

我有一大堆圖像顯示了一些黑斑,其位置隨時間變化(見圖b)。爲了檢測斑點,我現在使用強度閾值(圖中的c,其中所有低於閾值的強度值設置爲1),然後使用下面的Matlab代碼在二值圖像中搜索斑點。正如你看到的二進制圖像相當嘈雜,使斑點檢測過程變得複雜。你有沒有關於如何改進形狀檢測的建議,可能包括一些機器學習算法?謝謝!使用機器學習的斑點檢測?

代碼:

se = strel('disk',1); 
se_1 = strel('disk',3); 
pw2 = imclose(IM,se); 
pw3 = imopen(pw2,se_1); 
pw4 = imfill(pw3, 'holes'); 

% Consider only the blobs with more than threshold pixels 
[L,num] = bwlabel(pw4); 
counts = sum(bsxfun(@eq,L(:),1:num)); 
number_valid_counts = length(find(counts>threshold)); 

enter image description here

+0

所以基本上,你只是想從圖B中提取blob?或blob(來自圖b)mius酒吧(圖c)? – 2014-09-24 09:01:34

回答

1

這可能會有幫助。

  1. 提取要提取的斑點邊界的紋理特徵。這可以使用Local binary patterns完成。還有許多其他的紋理特徵,你可以得到詳細的調查here

  2. 然後用它們來訓練一個二元分類器。

+0

謝謝!我會盡力讓你知道它是否有效;-) – 2014-09-22 10:02:20

1

看起來像是圖像下方的脈衝數據,我建議獲取一些圖像並垂直於脈衝方向切片像素的垂直線,每次您拍一行值,稍微高於和低於脈衝,條帶寬度是一個像素,並且其高度比脈衝圖像稍大一些,以便將脈衝中的某些光值取得低於和高於脈衝,則可以從像素420-490開始,每次保存70個灰度值時,這些將形成特徵矢量,也可以從非斑點區域中取出線條保存到第2類,在每張圖像的幾個圖像和線條上執行此操作。

現在你會得到你的訓練數據,你可以使用任何機器學習算法訓練的脈衝和非脈衝計算機,

在測試步驟,您掃描圖像讀取每次70個垂直並進行測試針對訓練有素的模型,如果它們屬於類「bolob」繪製的白色垂直線,則從測試像素的下方開始繪製新的黑色圖像,否則在輸出圖像上不繪製任何東西。

掃描圖像結束時:檢查是否有可能刪除的孤立白線,將其視爲錯誤接受。如果您在一組白線內發現黑線,則將其轉換爲白線,考慮錯誤拒絕。

你可以使用我的分類:https://www.researchgate.net/publication/265168466_Solving_the_Problem_of_the_K_Parameter_in_the_KNN_Classifier_Using_an_Ensemble_Learning_Approach

,如果你決定我會送你所男女同校做。距離度量是一個問題,因爲值在0到255之間變化,所以光線值將支配距離,爲了解決這個問題,您可以使用Hassanat距離度量:https://www.researchgate.net/publication/264995324_Dimensionality_Invariant_Similarity_Measure

因爲它在數據中的比例是不變的,因爲每個特徵不會輸出0到1之間的值,因此最高值不會支配最終距離。

祝你好運

+0

歡迎來到StackOverflow。你很想爲此做出貢獻。然而,你的回答並不真正回答這個問題。你說「你可以使用任何機器學習算法」,這不是很有用。另外,如果你知道可以工作的東西(在這種情況下可以是你自己的算法),請包括一個最簡單的例子,說明這將如何工作。請記住包含輸入和輸出圖像,以便其他人可以重新產生您的結果。發佈自己的論文鏈接對未來的讀者無助,因爲該鏈接可能會失效。 – kkuilla 2014-09-22 10:39:43