2012-05-22 43 views
5

Tôi đang làm việc trên một đoạn mã trong MATLAB bằng cách sử dụng Hộp công cụ xử lý hình ảnh, nơi tôi đã sử dụng Skel = bwmorph (BM, 'skel') để lấy bộ xương của một con sông. Tôi muốn sử dụng BP = bwmorph (Skel, 'branchpoints') để có được những điểm mà các hợp lưu và các nhánh phụ tồn tại. Tôi nhận được rất nhiều điểm tích cực sai trong BP bất cứ khi nào bộ xương trông giống nhưĐiểm chi nhánh của bwmorph hoạt động như thế nào?

oQo 
Q 
o 

Nó đánh dấu điểm ảnh Q là điểm nhánh cùng với điểm chi nhánh thực tế dự kiến. Có rất nhiều điều sai trái tích cực như thế.

Tôi đã nhận thấy rằng một điểm nhánh thực sự giống như một điểm ảnh bị cô lập trong BP, trong khi các điểm chi nhánh fals luôn luôn hình thành theo cặp.

Bất cứ ai có thể vui lòng cho tôi biết cách thuật toán chi nhánh tìm điểm? Nếu tôi biết điều đó, tôi có thể hài lòng rằng có một lý do thực sự tại sao các kết quả dương tính giả là theo cặp, và dương tính thực là một mình, chứ không phải ngẫu nhiên may mắn.

Tôi có cảm giác nó nhìn vào kết nối 8 xung quanh pixel, nhưng tôi nghĩ đó không phải là tất cả.

Để làm rõ, tôi đã đánh dấu hình ảnh đã cắt của đầu ra. Các mặt tích cực nó mang lại được thể hiện bằng màu đỏ. Như có thể thấy, chỉ một trong những điểm ảnh này thực sự là một điểm chi nhánh. Tôi muốn biết làm thế nào các thuật toán hoạt động để tôi có thể đưa ra một lý do hợp lý cho lý do tại sao sai tích cực đi theo cặp (nếu họ infact làm).

The image

+0

Tôi không nhận được bản vẽ của bạn 'OQO Q o'. Bạn có thể tải lên một hình ảnh cho thấy những gì đang xảy ra không? – Tobold

+0

Tôi đã thêm một liên kết vào hình ảnh: [link] (http://i.imgur.com/w5udH.jpg) – shashwat

Trả lời

2

pixel của bạn không phải là tối thiểu (8-) kết nối, hãy thử sử dụng

Thin = bwmorph(Skel,'thin'); 
BP = bwmorph(Thin,'branchpoints'); 

để loại bỏ các điểm ảnh không cần thiết. (Bạn cũng có thể sử dụng mỏng thay vì skel).

Tôi nghĩ thuật toán cơ bản của các điểm chi nhánh sẽ nhìn vào điểm ảnh vùng lân cận 3,3 nếu ít nhất 3 pixel (trừ trung tâm) là '1'.

+0

Cảm ơn rất nhiều! Sử dụng mỏng để tối thiểu kết nối chúng được loại bỏ các dương tính giả, _and_ tôi có thể thấy chính xác lý do tại sao. Ngoài ra, tôi tin rằng nó không chỉ kiểm tra vùng lân cận 3x3, vì nếu không, bất kỳ đường giao nhau T sẽ cho 4 pixel và không chỉ 1. (Ít nhất đó là cách bản sao thuật toán của tôi xuất hiện khi tôi viết nó) bạn nói đúng .. điều đó dường như là tiêu chí chính. Cảm ơn một lần nữa vì hoạt động 'mỏng' ... – shashwat

2
BW = (rgb2gray(imread('w5udH.jpg')) > 50); 
[i,j] = ind2sub(size(BW), find(bwmorph(bwmorph(BW,'thin',Inf),'branchpoint') == 1)); 
imshow(BW); hold on; plot(j,i,'rx'); 

(có một số hiện vật lạ trong hình ảnh gây ra bằng cách tải lên nó ở đây)

enter image description here

Các vấn đề liên quan