2017-05-07 90 views
3

我有一系列的线的图像,如下图所示:发现一系列的图像的曲线的交叉点:Matlab

lines example

我想知道是否有一些方法找到所有线的交点。

我正在检查另一篇文章,他们提供了一种方法来查找交点,但一旦图像被分割,我认为它有噪音或类似的东西......我将从一个简单的图像开始,找到每个交点。

我的主要想法是解决“方程组”,但我认为对于具有许多交叉点的图像太困难了,我不知道是否有任何方法可以找到所有交点。

+0

你有线条的方程,或者是你分析图像? – Wolfie

+1

我正在分析一个图像,但我从简单的例子开始,让我了解如何使用不受控制的图像 – AlexZ

回答

4

我假设你没有线方程。我用镂空和过滤来检测有多条线穿过它们的小区域。我不知道,这将是在嘈杂的形象那么简单,但值得一试:

im = im2double(rgb2gray(imread('lines.png'))); 
% binarize black lines 
bw = im == 0; 
% skelatonize lines 
sk = bwmorph(bw,'skel',inf); 
% filter skeleton with 3X3 ones filter 
A = imfilter(double(sk),ones(3)); 
% find blobs greater than 4 - more than one line crossing the filter 
B = A > 4; 
% get centroids of detected blobs 
C = regionprops(B,'Centroid'); 
Cent = reshape([C.Centroid],2,[]).'; 
% plot 
imshow(im) 
hold on; 
plot(Cent(:,1),Cent(:,2),'gx','LineWidth',2) 

enter image description here