腐蚀膨胀的方向性

slshelly 2009-08-10 04:13:43
今天把图像处理的一些算法整理了一下,突然感觉有好多不明白的地方。比如这个膨胀腐蚀,在算法上面有水平方向腐蚀(膨胀),还有垂直方向腐蚀(膨胀),那我在使用的时候应该是调用水平方向还是垂直方向那 ? 图像处理软件eVision上面的膨胀腐蚀就没有选择方向,那它是怎么算的那?请高人指点一下。
...全文
249 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jtujtujtu 2009-08-11
  • 打赏
  • 举报
回复
同时的吧
试试呢
slshelly 2009-08-11
  • 打赏
  • 举报
回复
那如果要对图像进行腐蚀,是不是先水平再垂直?
sunshengx 2009-08-11
  • 打赏
  • 举报
回复
腐蚀膨胀都是两个方向进行的 因为图像是二维的,
slshelly 2009-08-11
  • 打赏
  • 举报
回复
谢谢
fire_woods 2009-08-11
  • 打赏
  • 举报
回复
还是直接判断周围的8像素就可以了那!
zhongsuquan 2009-08-11
  • 打赏
  • 举报
回复
用水平还是垂直是要根据你的需求来定的,至于没有选择方向的,一般都是用的9点结构来进行水平加垂直方向的形态学运算。比如你要得到一个图形的轮廓,就不能只用水平或垂直方向。图像处理所有的算法都不是固定使用的,不是万能的,是要根据图像的特点和需要的结果来选择适合的算法。
slshelly 2009-08-11
  • 打赏
  • 举报
回复
还有就是如下代码是先水平再垂直
if (nMode == 0)
{
//使用水平方向的结构元素进行腐蚀
// 由于使用1×3的结构元素,为防止越界,所以不处理最左边和最右边
// 的两列像素
for (j = 0; j < lHeight; j++)
{
for (i = 1; i < lWidth - 1; i++)
{
DestImgC24->SetValue(i, j,0);


if (SourImgC24->GetValue(i - 1, j) > dgGrayValue ||
SourImgC24->GetValue(i, j) > dgGrayValue ||
SourImgC24->GetValue(i + 1, j) > dgGrayValue)
DestImgC24->SetValue(i, j, 255);
}
}
}
else if (nMode == 1)
{
//使用垂真方向的结构元素进行腐蚀
for (j = 1; j < lHeight - 1; j++)
{
for (i = 0; i < lWidth; i++)
{
//目标图像中的当前点先赋成黑色
DestImgC24->SetValue(i, j,0);

//如果源图像中当前点自身或者左右有一个点不是黑色,
//则将目标图像中的当前点赋成白色
if (SourImgC24->GetValue(i, j - 1) > dgGrayValue ||
SourImgC24->GetValue(i, j) > dgGrayValue ||
SourImgC24->GetValue(i, j + 1) > dgGrayValue)
DestImgC24->SetValue(i, j, 255);
}
}
}
与 判断周边8个像素的值得出的结果是不同的,我该怎么用那?
是先判断水平再垂直,还是直接判断周围的8像素就可以了那 ?

for (j = 1; j < lHeight - 1; j++)
{
for (i = 0; i < lWidth; i++)
{
//目标图像中的当前点先赋成黑色
DestImgC24->SetValue(i, j,0);

//如果源图像中当前点自身或者左右有一个点不是黑色,
//则将目标图像中的当前点赋成白色
if (SourImgC24->GetValue(i - 1, j - 1) > dgGrayValue ||
SourImgC24->GetValue(i , j - 1) > dgGrayValue ||
SourImgC24->GetValue(i + 1, j - 1) > dgGrayValue ||
SourImgC24->GetValue(i - 1, j ) > dgGrayValue ||
SourImgC24->GetValue(i , j) > dgGrayValue ||
SourImgC24->GetValue(i + 1, j ) > dgGrayValue ||
SourImgC24->GetValue(i - 1, j + 1) > dgGrayValue ||
SourImgC24->GetValue(i , j + 1) > dgGrayValue ||
SourImgC24->GetValue(i + 1, j + 1) > dgGrayValue )
DestImgC24->SetValue(i, j, 255);
}
}

fiveyes 2009-08-11
  • 打赏
  • 举报
回复
或者去“专题开发/技术/项目”的“数据结构与算法”版问问看。
fiveyes 2009-08-11
  • 打赏
  • 举报
回复
不懂。
你可以试着到“更多论坛->专题开发/技术/项目->图形图像/机器视觉”版块去问问。

4,499

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧