我在这里发布了一个相关但不相同的问题https://stackoverflow.com/questions/8279698/measuring-length-of-dna-fibers-from-an-image-of-single-molecules
背景:我有很多看起来像这样的图像:
我想识别所有共线的线段,然后测量这些线段的长度。在上图中,有 3 对线段位于一条具有负斜率的假想线上。最长的线段没有一对,因此不会被考虑,即必须至少有 2 个共线的线段。
我得到以下信息:
I = imread('http://dl.dropbox.com/u/18072545/c_39_green.tif');
BW = edge(I,'canny');
[H,T,R] = hough(BW);
NUMPEAKS=15;
PEAKTHRESHOLD= 80;
SUPPRESSNHBR=[40 40];
P = houghpeaks(H,NUMPEAKS,'threshold',PEAKTHRESHOLD,'NHoodSize',SUPPRESSNHBR);
MINLENGTH_OF_SEGMENT=50;
GAPLENGTH_TO_MERGE=30;
lines = houghlines(BW,T,R,P,'FillGap',GAPLENGTH_TO_MERGE,'MinLength',MINLENGTH_OF_SEGMENT);
max_len = 0;
figure, imshow(I), hold on
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
end
为了获得合理的性能,我不得不使用这些参数(尽管我无法找到一个参数来捕获位于底部的段的起始位)。但是,我无法避免找到重叠的多个段。
有人可以帮我 1. 防止识别重叠段。2.识别所有共线的线
非常感谢!