Algorithm 线简化图像处理

Algorithm 线简化图像处理,algorithm,matlab,image-processing,Algorithm,Matlab,Image Processing,我正在尝试使用douglas peucker算法来简化连接的组件。我使用bwlabel获取连接的组件,并将其发送到douglas算法。以下是我正在使用的算法的链接- 这是我的密码- clc; image=imread('mmm1.jpg'); image = im2bw(image); [imx imy]=size(image); n1=zeros(imx,imy); I=zeros(imx,imy); L = bwlabel(image,8) ;%Calculating connected

我正在尝试使用
douglas peucker
算法来简化连接的组件。我使用
bwlabel
获取连接的组件,并将其发送到
douglas
算法。以下是我正在使用的算法的链接-

这是我的密码-

clc;
image=imread('mmm1.jpg');
image = im2bw(image);

[imx imy]=size(image);
n1=zeros(imx,imy);
I=zeros(imx,imy);
L = bwlabel(image,8) ;%Calculating connected components
[r,c] = find(L==1);        %Using 1st connected component
n1=zeros(imx,imy);
rc = [r c];

[ps mm]     = dpsimplify(rc,1);          %Douglas-Peucker algorithm

 %To display original component 
%___________________________________________________________________  
[sx sy]=size(rc);
for j=1:sx
    x1=rc(j,1);
    y1=rc(j,2);
    n1(x1,y1)=1;
end
figure,imshow(n1);
%___________________________________________________________________
 %To display component after simplification 
 n1=zeros(imx,imy);
 [sx sy]=size(mm);
 for j=1:sx
    x1=rc(j,1);
    y1=rc(j,2);
    n1(x1,y1)=1;
 end
 figure,imshow(n1);
这是我最初的输入图像-

这是我应用的
douglaspeucker
算法的
1st
组件-

这是算法的结果-


Douglas Peucker的代码可以在我上面提到的链接中找到。因此,我的问题是,为什么整个组件没有进行简化?我如何解决这个问题?

我相信您想确定图像中有多少直线段。我做了一些类似于形态学打击的事情,并且能够分割这些线,尽管不是全部长度

我准备了一个垂直线结构元素(SE),然后通过围绕其中心旋转60度和120度来创建另外两个SE。我用这些SEs腐蚀原始图像,然后获得连接的组件

im = imread('IWVlt.jpg');
bw = im2bw(im, graythresh(im));

% SEs
w = 15;
line = zeros(w);
line(:, round(w/2)) = 1;

bw1 = zeros(size(bw));

for i = 1:3
    bw1 = bw1 + imerode(bw, line);
    line = imrotate(line, 60, 'nearest');
end

[lbl, n] = bwlabel(bw1, 8);

figure, imshow(bw1)
figure, imshow(label2rgb(lbl))
结果我得到了25个组件。通过改变代码中的w,可以最大限度地减少错误。

对于w=9,这是w在检测所有分段时可以采用的最低值,我得到了26个分量。可以过滤掉过小的零部件。

我猜是因为你需要描述“线”的点或线,而不是像素。首先尝试获取图像的骨架。PD:为什么要简化这些线路?你期待什么?这是因为当我运行
角点检测算法时,
这张图像中的许多斜线没有得到足够的简化,它们给出了错误的结果。角点检测无法在这些图像中运行,因为它检测到太多的角点,而您需要的是图像的形态骨架你的形象!(我想)嗨!我已经为我们建立了一个聊天室,这样我们就可以讨论与MATLAB相关的事情,这些事情可能是离题的,或者跨越的时间可能比放在评论框中的时间更长。有时间就来参观吧!你好我已经为我们建立了一个聊天室,这样我们就可以讨论与MATLAB相关的事情,这些事情可能是离题的,或者跨越的时间可能比放在评论框中的时间更长。有时间就来参观吧!