1
我有一組連接的斑點,我想區分更規則的(a
,c
和d
)與更不規則的區域,如b
。區分正常和不規則形狀的斑點
我嘗試過使用卷積區域(在blob_area/convolved_blob_area上設置閾值),shape factor and roundness,但沒有一個可以很好地區分d
和香蕉形狀。你會建議使用哪些參數?謝謝!那我腦子裏浮現
我有一組連接的斑點,我想區分更規則的(a
,c
和d
)與更不規則的區域,如b
。區分正常和不規則形狀的斑點
我嘗試過使用卷積區域(在blob_area/convolved_blob_area上設置閾值),shape factor and roundness,但沒有一個可以很好地區分d
和香蕉形狀。你會建議使用哪些參數?謝謝!那我腦子裏浮現
一個想法是,你可以使用number of corners
每size of blob
確定regularity/irregularity
。測試結果似乎也符合我們的假設。下面的代碼 -
im = imread(input_image_path);
bw= im2bw(im);
%// Parameter for cutting into four slices into the third dimsensions
%// corresponding to the four objects
common_width = 270;
%// Threshold to decide between regular and irregular ones
factor1_th = 0.01;
bw1 = bw(:,1:common_width*floor(size(bw,2)/common_width)); %// Cropped image
objs =reshape(bw1,size(bw1,1),common_width,[]);%//Objects stored as dim3 slices
for objc=1:size(objs,3) %// Object counter
disp(['-------------- Processing Obj #' num2str(objc)]);
obj = objs(:,:,objc);
corners = corner(obj);
factor1 = size(corners,1)/nnz(obj)
if factor1 > factor1_th
disp('This is an irregular one.'); %//'
else
disp('This is a regular one.'); %//'
end
end
輸出 -
-------------- Processing Obj #1
factor1 =
0.0050
This is a regular one.
-------------- Processing Obj #2
factor1 =
0.0109
This is an irregular one.
-------------- Processing Obj #3
factor1 =
0.0052
This is a regular one.
-------------- Processing Obj #4
factor1 =
0.0078
This is a regular one.
如果有人有興趣運行的代碼,這裏有A,B,C,D去除的符號輸入圖像 -
一個快速和骯髒的可能的解決方案:calcu晚'周長/面積',併爲此設置了一個門檻。 – 2014-09-01 18:49:50
@albus_c我確實考慮過這個問題,但這樣你就會像香蕉那樣伸長的物體和被認爲是不規則的細棒,我不認爲你需要這樣或者你會這樣嗎? – Divakar 2014-09-01 18:52:22
我同意你的意見。我認爲數角作爲解決方案要好得多! – 2014-09-03 20:49:42