机器视觉--图像的运算(乘法)

一、引言

在图像处理领域,Halcon 是一款功能强大且广泛应用的机器视觉软件库。它提供了丰富的算子和工具,能够满足各种复杂的图像处理需求。图像的乘法运算作为其中一种基础操作,虽然不像一些边缘检测、形态学处理等操作那样被频繁提及,但在特定的应用场景中却有着不可替代的作用。本文将深入探讨 Halcon 中图像乘法运算的原理、具体实现方式,并通过实际的演示程序来展示其效果,同时介绍一些常见的应用场景。

二、图像乘法运算的原

图像乘法运算,从本质上来说,是对两幅图像(或者是一幅图像与一个常数)对应像素点的值进行乘法操作。

  1. 图像与图像相乘:假设有两幅大小相同的图像 和 ,它们的尺寸均为 ,那么经过乘法运算后得到的图像 的每个像素点 的灰度值 由以下公式确定:

在实际的图像中,像素值通常是在一定的范围内(例如 0 到 255),当进行乘法运算时,结果可能会超出这个范围。在 Halcon 中,会根据具体的设置对超出范围的值进行处理,一般是截断到有效范围内(如大于 255 的值会被截断为 255)。

  1. 图像与常数相乘:当一幅图像 与一个常数 相乘时,得到的结果图像 的每个像素点 的灰度值 为:

这种操作常用于图像的亮度调整,当 时,图像会变亮;当 时,图像会变暗。

三、Halcon 中图像乘法运算的实现步骤

  1. 读取图像 :首先,使用 read_image 算子读取要进行乘法运算的图像。如果是图像与图像相乘,需要读取两幅图像;如果是图像与常数相乘,只需读取一幅图像。
  2. 准备乘数:如果是图像与图像相乘,确保两幅图像的尺寸一致。如果是图像与常数相乘,确定好要相乘的常数。
  3. 执行乘法运算 :使用 mult_image 算子进行图像的乘法运算。该算子的语法为 mult_image(Image1, Image2, ImageResult, Mult, Add),其中 Image1Image2 是参与运算的图像(或者一个是图像,另一个是常数),ImageResult 是运算结果图像,Mult 是乘法因子(当 Image2 是常数时,Mult 就是该常数;当 Image2 是图像时,Mult 一般为 1),Add 是加法因子(在单纯的乘法运算中一般为 0)。
  4. 显示结果 :使用 dev_display 算子将乘法运算后的结果图像显示出来,以便直观地观察运算效果。

四、演示程序

* 读取图像
read_image(Image, 'fabrik')

* 图像与常数相乘,将图像亮度提高 1.5 倍
mult_image(Image, 1.5, ResultImage, 1, 0)

* 显示原始图像
dev_display(Image)
disp_continue_message (dev_get_window (), 'black', 'true', '请按任意键继续查看亮度调整后的图像...')
stop ()

* 显示乘法运算后的图像
dev_display(ResultImage)
disp_continue_message (dev_get_window (), 'black', 'true', '按任意键结束程序...')
stop ()

* 以下是图像与图像相乘的示例
* 读取另一幅与原始图像尺寸相同的图像(这里假设另一幅图像也有合适的内容用于乘法运算)
read_image(Image2, 'coins')
* 确保两幅图像尺寸一致,若不一致需进行调整(这里假设尺寸已一致)
* 进行图像与图像相乘
mult_image(Image, Image2, ImageMultResult, 1, 0)

* 显示图像与图像相乘后的结果
dev_display(ImageMultResult)
disp_continue_message (dev_get_window (), 'black', 'true', '按任意键结束关于图像与图像相乘的演示...')
stop ()

代码解释

  1. 图像读取 :使用 read_image 算子读取了一幅名为 fabrik 的图像,作为后续运算的基础图像。
  2. 图像与常数相乘 :通过 mult_image 算子将读取的图像与常数 相乘,实现图像亮度的提高。这里 Mult 参数设置为 (因为是与常数相乘,此参数无实际影响,一般设为 1),Add 参数设置为 (不进行额外的加法操作)。
  3. 结果显示 :使用 dev_display 算子分别显示原始图像和乘法运算后的结果图像,并通过 disp_continue_messagestop 算子实现按任意键继续的交互功能,方便观察图像的变化。
  4. 图像与图像相乘 :又读取了一幅名为 coins 的图像(假设其尺寸与 fabrik 图像相同),然后使用 mult_image 算子进行图像与图像的乘法运算,并显示运算结果。

五、应用场景

  1. 图像亮度调整:通过将图像与一个合适的常数相乘,可以实现对图像亮度的增强或减弱。例如在一些光线不足的场景中拍摄的图像,通过适当增大乘法常数可以使图像更清晰,便于后续的分析和处理。
  2. 图像融合:在图像融合的应用中,图像乘法运算可以用于将不同图像的某些特征进行融合。比如,将一幅包含纹理信息的图像与另一幅包含边缘信息的图像相乘,可能会得到同时具有丰富纹理和清晰边缘的新图像,有助于更全面地分析图像内容。
  3. 掩膜操作:可以将一幅图像作为掩膜(Mask),与另一幅图像相乘。掩膜图像中像素值为 0 的区域在相乘后会使对应位置的图像像素值变为 0,从而实现对图像特定区域的屏蔽或提取。例如,在医学图像分析中,可以使用掩膜图像来提取感兴趣的器官区域。

六、总结

Halcon 中的图像乘法运算虽然看似简单,但在图像处理中有着广泛的应用和重要的意义。通过本文对其原理的详细介绍、实现步骤的讲解以及演示程序的展示,相信读者对图像乘法运算有了更深入的理解。无论是在图像的亮度调整、融合还是掩膜操作等方面,合理运用图像乘法运算都能为图像处理任务带来新的思路和方法。在实际应用中,读者可以根据具体的需求,灵活运用这一操作,并结合 Halcon 的其他强大功能,实现更高效、更精准的图像处理。同时,不断探索和尝试不同的参数设置和应用场景,将有助于进一步挖掘图像乘法运算的潜力,为解决各种实际问题提供有力的支持。

相关推荐
天天向上杰3 分钟前
通义灵码AI程序员
人工智能·aigc·ai编程
sendnews14 分钟前
AI赋能教育,小猿搜题系列产品携手DeepSeek打造个性化学习新体验
人工智能
紫雾凌寒26 分钟前
解锁机器学习核心算法|神经网络:AI 领域的 “超级引擎”
人工智能·python·神经网络·算法·机器学习·卷积神经网络
WBingJ36 分钟前
2月17日深度学习日记
人工智能
zhengyawen66637 分钟前
深度学习之图像分类(一)
人工智能·深度学习·分类
莫莫莫i41 分钟前
拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!
人工智能·微软·量子计算
C#Thread44 分钟前
机器视觉--图像的运算(加法)
图像处理·人工智能·计算机视觉
无极工作室(网络安全)1 小时前
机器学习小项目之鸢尾花分类
人工智能·机器学习·分类
涛涛讲AI1 小时前
文心一言大模型的“三级跳”:从收费到免费再到开源,一场AI生态的重构实验
人工智能·百度·大模型·deepseek
视觉人机器视觉1 小时前
机器视觉中的3D高反光工件检测
人工智能·3d·c#·视觉检测