[已解决] 点云轮廓提取后锯齿状多边形规则化

[复制链接]
南风依旧很柔 发表于 2022-8-1 20:26:09

我将一个面的点云最边缘的点提取出来,然后将每个点连接起来作为轮廓线,但是边缘点参差不齐,导致线段是折线,请问有什么办法让它变直吗,因为我做的是建筑物立面边缘提取,请大家指导一下。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

最佳答案


myisland 发表于 2022-8-2 08:45:29
Hough直线检测
回复此楼

13 条回复


myisland 发表于 2022-8-2 08:45:29
Hough直线检测
回复此楼

南风依旧很柔 发表于 2022-8-3 20:51:27

您好,请问我用这个算法提取后是这个效果,一方面就是它只显示了小范围,另一方面就是它效果也不好,我就是用我这个帖子的线的那个照片,能不能麻烦您帮我解决一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

lyqmath 发表于 2022-8-4 09:25:06
南风依旧很柔 发表于 2022-8-3 20:51
您好,请问我用这个算法提取后是这个效果,一方面就是它只显示了小范围,另一方面就是它效果也不好,我就 ...

可以考虑做直线拟合

myisland 发表于 2022-8-4 09:25:26
南风依旧很柔 发表于 2022-8-3 20:51
您好,请问我用这个算法提取后是这个效果,一方面就是它只显示了小范围,另一方面就是它效果也不好,我就 ...

限制一下找到的线段的长度,从结果来看目前的阈值太小了。

南风依旧很柔 发表于 2022-8-4 14:33:08
myisland 发表于 2022-8-4 09:25
限制一下找到的线段的长度,从结果来看目前的阈值太小了。

的却,是这样的问题但是我感觉效果还是不好,这是我的代码%%Hougn变换
I=imread('图片2.png');
f=rgb2gray(I);%RGB-->gray
f=f(round(end/99):end,1:round(end/1));%调整显示照片范围大小
BW=edge(f,'canny');  %edge:以灰度图像为输入,'canny'为边缘检测算子
                     %     输出BW为二值图像,边缘处为白(255)其余部分为黑(0)
imshow(f)
title('原始图像')
[row,col]=size(BW);
rhomax=round((row*row+col*col)^0.5);
A=zeros(2*rhomax,180);   %这里,实际上rho的取值范围为[-rhomax,rhomax],
                         %但是为了后面进行数量统计,转变为[1,2rhomax]
for m=1:row
    for n=1:col
        if BW(m,n)>0 %判断为边缘
            for theta=1:180
                r=theta/180*pi; %角度转换
                rho=round(m*cos(r)+n*sin(r));
                %Hough变换
                rho=rho+rhomax+1;   %坐标平移
                                    %这里的理解,首先matlab中数组是从1开始计数,所以+1;
                                    %数组坐标不能<0,所以 +rhomax
                A(rho,theta)=A(rho,theta)+1;   %数量统计
            end
        end
    end
end
[rho,theta]=find(A>115);   %超过130个点视为共线,rho列号,theta行号
nma=length(rho);
figure,imshow(BW)
for i=1:nma
    hold on
    m=1:row;
    r=theta(i)/180*pi;
    n=(rho(i)-rhomax-m*cos(r))/(0.0001+sin(r));
    plot(n,m,'w-','LineWidth',6);
end
title('hough线检测');

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

南风依旧很柔 发表于 2022-8-4 14:34:07
lyqmath 发表于 2022-8-4 09:25
可以考虑做直线拟合

您好,请问用什么办法呢lol

lyqmath 发表于 2022-8-4 15:40:22
南风依旧很柔 发表于 2022-8-4 14:34
您好,请问用什么办法呢lol



方便的话,可以上传一下图片文件

用霍夫做直线后,还需要做合并,将共线的直线做组合


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

南风依旧很柔 发表于 2022-8-4 17:22:42
lyqmath 发表于 2022-8-4 15:40
方便的话,可以上传一下图片文件

用霍夫做直线后,还需要做合并,将共线的直线做组合

您好,这个就是我提取点云后连接点生成的图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

南风依旧很柔 发表于 2022-8-4 17:23:28
lyqmath 发表于 2022-8-4 15:40
方便的话,可以上传一下图片文件

用霍夫做直线后,还需要做合并,将共线的直线做组合

您好,能不能加一下我“微型”18337571229,像您请教一下

myisland 发表于 2022-8-5 09:17:13
其实有点本末倒置了。
1. 你有点云的数据,有边缘的确切坐标;
2. 按照你的场景,轮廓被假设为由直线段组成。
可以脱离图像处理的方法来实现,直接使用轮廓坐标。
以任意一点为起点,不断将周围的点拉进来,利用“共线”程度(R2等指标)可以判断周围点是否应该位于同一条直线。平行且距离很近的线直接合并到点数最多的线上。这样线段的端点是已知的;P

南风依旧很柔 发表于 2022-8-5 12:39:19
myisland 发表于 2022-8-5 09:17
其实有点本末倒置了。
1. 你有点云的数据,有边缘的确切坐标;
2. 按照你的场景,轮廓被假设为由直线段组成 ...

对的,针对点云来处理是最好的,弄成图像再处理的话那还不如直接用遥感图像来做,但是我写不出来代码,大佬指教一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

南风依旧很柔 发表于 2022-8-5 13:25:49
myisland 发表于 2022-8-5 09:17
其实有点本末倒置了。
1. 你有点云的数据,有边缘的确切坐标;
2. 按照你的场景,轮廓被假设为由直线段组成 ...

这是我在网上看到的一篇论文

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

myisland 发表于 昨天 09:22
南风依旧很柔 发表于 2022-8-5 13:25
这是我在网上看到的一篇论文

help ransac
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表