我有这样的一张图片(已完成阈值处理,噪声去除等操作):
我的最终输出应该是一张没有任何锯齿边缘并且比给定图片小的图片。我指的是新旧两张图片唯一的不同之处在于新图片中的锯齿边缘被移除了,而不是填充了。就像这样(最终图片必须是红色边框内的区域,红色边框仅用于解释):
我想的是使用霍夫变换或使用膨胀然后腐蚀等方法,但似乎都无效(可能是我的问题,因为我之前没有详细研究过它们)。
请注意,我想要使用的语言是MATLAB。
这有两个主要目标:
1.使用霍夫变换获取边缘
2.当使用regionprops时,“Extrema”属性返回所需点,如下所示:
问如下:
1.如何在MATLAB中提取此T,以便它没有粗糙的边缘,但总体图形不会比原始图像更大,如上图二所示?换句话说,采用什么一组转换(在MATLAB中)可以使图像边缘平滑(尽量不损失面积,但不添加面积)以消除粗糙感?
2.是否有一种更有效的方法来提取角点(极值点),如上图二所示,而不需要经过第一步?
附加信息:
考虑到的所有图像都由大约相互垂直的矩形组成,没有其他图形。因此,使有曲线边缘的图像变平滑,例如,将超出这个问题的范围(或者说,一个梯形),尽管我认为使两条直边变得平滑应该是相同的,无论该边是否有另一条与之平行。
以下为几张参考图片:
我的最终输出应该是一张没有任何锯齿边缘并且比给定图片小的图片。我指的是新旧两张图片唯一的不同之处在于新图片中的锯齿边缘被移除了,而不是填充了。就像这样(最终图片必须是红色边框内的区域,红色边框仅用于解释):
我想的是使用霍夫变换或使用膨胀然后腐蚀等方法,但似乎都无效(可能是我的问题,因为我之前没有详细研究过它们)。
请注意,我想要使用的语言是MATLAB。
这有两个主要目标:
1.使用霍夫变换获取边缘
2.当使用regionprops时,“Extrema”属性返回所需点,如下所示:
问如下:
1.如何在MATLAB中提取此T,以便它没有粗糙的边缘,但总体图形不会比原始图像更大,如上图二所示?换句话说,采用什么一组转换(在MATLAB中)可以使图像边缘平滑(尽量不损失面积,但不添加面积)以消除粗糙感?
2.是否有一种更有效的方法来提取角点(极值点),如上图二所示,而不需要经过第一步?
附加信息:
考虑到的所有图像都由大约相互垂直的矩形组成,没有其他图形。因此,使有曲线边缘的图像变平滑,例如,将超出这个问题的范围(或者说,一个梯形),尽管我认为使两条直边变得平滑应该是相同的,无论该边是否有另一条与之平行。
以下为几张参考图片:
bwtraceboundary
。它会给你一个二元向量,因此你可以跟踪边界,并从中得到边界的二元向量([行列])。对此进行差分并找出边界改变方向的点。一旦您获得了这些点,您只需要对其进行后处理以满足您的约束条件。您可能无法完全正确地解决问题,但这是我现在能想到的。 - Autonomous