机器视觉--图像的运算(乘法)
一、引言
在图像处理领域,Halcon 是一款功能强大且广泛应用的机器视觉软件库。它提供了丰富的算子和工具,能够满足各种复杂的图像处理需求。图像的乘法运算作为其中一种基础操作,虽然不像一些边缘检测、形态学处理等操作那样被频繁提及,但在特定的应用场景中却有着不可替代的作用。本文将深入探讨 Halcon 中图像乘法运算的原理、具体实现方式,并通过实际的演示程序来展示其效果,同时介绍一些常见的应用场景。
二、图像乘法运算的原
图像乘法运算,从本质上来说,是对两幅图像(或者是一幅图像与一个常数)对应像素点的值进行乘法操作。
- 图像与图像相乘:假设有两幅大小相同的图像 和 ,它们的尺寸均为 ,那么经过乘法运算后得到的图像 的每个像素点 的灰度值 由以下公式确定:
在实际的图像中,像素值通常是在一定的范围内(例如 0 到 255),当进行乘法运算时,结果可能会超出这个范围。在 Halcon 中,会根据具体的设置对超出范围的值进行处理,一般是截断到有效范围内(如大于 255 的值会被截断为 255)。
- 图像与常数相乘:当一幅图像 与一个常数 相乘时,得到的结果图像 的每个像素点 的灰度值 为:
这种操作常用于图像的亮度调整,当 时,图像会变亮;当 时,图像会变暗。
三、Halcon 中图像乘法运算的实现步骤
- 读取图像:首先,使用
read_image
算子读取要进行乘法运算的图像。如果是图像与图像相乘,需要读取两幅图像;如果是图像与常数相乘,只需读取一幅图像。 - 准备乘数:如果是图像与图像相乘,确保两幅图像的尺寸一致。如果是图像与常数相乘,确定好要相乘的常数。
- 执行乘法运算:使用
mult_image
算子进行图像的乘法运算。该算子的语法为mult_image(Image1, Image2, ImageResult, Mult, Add)
,其中Image1
和Image2
是参与运算的图像(或者一个是图像,另一个是常数),ImageResult
是运算结果图像,Mult
是乘法因子(当Image2
是常数时,Mult
就是该常数;当Image2
是图像时,Mult
一般为 1),Add
是加法因子(在单纯的乘法运算中一般为 0)。 - 显示结果:使用
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 ()
代码解释
- 图像读取:使用
read_image
算子读取了一幅名为fabrik
的图像,作为后续运算的基础图像。 - 图像与常数相乘:通过
mult_image
算子将读取的图像与常数 相乘,实现图像亮度的提高。这里Mult
参数设置为 (因为是与常数相乘,此参数无实际影响,一般设为 1),Add
参数设置为 (不进行额外的加法操作)。 - 结果显示:使用
dev_display
算子分别显示原始图像和乘法运算后的结果图像,并通过disp_continue_message
和stop
算子实现按任意键继续的交互功能,方便观察图像的变化。 - 图像与图像相乘:又读取了一幅名为
coins
的图像(假设其尺寸与fabrik
图像相同),然后使用mult_image
算子进行图像与图像的乘法运算,并显示运算结果。
五、应用场景
- 图像亮度调整:通过将图像与一个合适的常数相乘,可以实现对图像亮度的增强或减弱。例如在一些光线不足的场景中拍摄的图像,通过适当增大乘法常数可以使图像更清晰,便于后续的分析和处理。
- 图像融合:在图像融合的应用中,图像乘法运算可以用于将不同图像的某些特征进行融合。比如,将一幅包含纹理信息的图像与另一幅包含边缘信息的图像相乘,可能会得到同时具有丰富纹理和清晰边缘的新图像,有助于更全面地分析图像内容。
- 掩膜操作:可以将一幅图像作为掩膜(Mask),与另一幅图像相乘。掩膜图像中像素值为 0 的区域在相乘后会使对应位置的图像像素值变为 0,从而实现对图像特定区域的屏蔽或提取。例如,在医学图像分析中,可以使用掩膜图像来提取感兴趣的器官区域。
六、总结
Halcon 中的图像乘法运算虽然看似简单,但在图像处理中有着广泛的应用和重要的意义。通过本文对其原理的详细介绍、实现步骤的讲解以及演示程序的展示,相信读者对图像乘法运算有了更深入的理解。无论是在图像的亮度调整、融合还是掩膜操作等方面,合理运用图像乘法运算都能为图像处理任务带来新的思路和方法。在实际应用中,读者可以根据具体的需求,灵活运用这一操作,并结合 Halcon 的其他强大功能,实现更高效、更精准的图像处理。同时,不断探索和尝试不同的参数设置和应用场景,将有助于进一步挖掘图像乘法运算的潜力,为解决各种实际问题提供有力的支持。
相关文章:
机器视觉--图像的运算(乘法)
一、引言 在图像处理领域,Halcon 是一款功能强大且广泛应用的机器视觉软件库。它提供了丰富的算子和工具,能够满足各种复杂的图像处理需求。图像的乘法运算作为其中一种基础操作,虽然不像一些边缘检测、形态学处理等操作那样被频繁提及&…...

突破反爬困境:从服务端渲染到客户端SPA,爬虫环境的演变与新挑战(一)
声明 本文所讨论的内容及技术均纯属学术交流与技术研究目的,旨在探讨和总结互联网数据流动、前后端技术架构及安全防御中的技术演进。文中提及的各类技术手段和策略均仅供技术人员在合法与合规的前提下进行研究、学习与防御测试之用。 作者不支持亦不鼓励任何未经授…...

matlab下载安装图文教程
【matlab介绍】 MATLAB是一款由美国MathWorks公司开发的专业计算软件,主要应用于数值计算、可视化程序设计、交互式程序设计等高科技计算环境。以下是关于MATLAB的简要介绍: MATLAB是MATrix LABoratory(矩阵实验室)的缩写&#…...
七、敏捷开发工具:持续集成与部署工具
一、敏捷开发工具——持续集成与部署工具 持续集成(CI)与持续部署(CD)是现代敏捷开发中不可或缺的关键实践。通过自动化构建、测试和部署流程,团队可以快速反馈、提高代码质量,并加速产品交付。为此,持续集成与部署工具应运而生,它们能够帮助开发团队在整个开发周期内…...

重看Spring聚焦BeanDefinition分析和构造
目录 一、对BeanDefinition的理解 (一)理解元信息 (二)BeanDefinition理解分析 二、BeanDefinition的结构设计分析 (一)整体结构体会 (二)重要接口和类分析 三、构造 BeanDef…...

2025年新型智慧城市整体解决方案下载:顶层规划设计,应用总体建设方案
一、引言 随着信息技术的飞速发展和城市化进程的加速,智慧城市已成为未来城市发展的新趋势。新型智慧城市通过深度融合物联网、大数据、云计算、人工智能等先进技术,旨在实现城市管理的智能化、精细化和服务的人性化,提升城市治理效能&#…...

【旋转框目标检测】基于YOLO11/v8深度学习的遥感视角船只智能检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

【物联网】电子电路基础知识
文章目录 一、基本元器件1. 电阻2. 电容3. 电感4. 二极管(1)符号(2)特性(3)实例分析5. 三极管(1)符号(2)开关特性(3)实例6. MOS管(产效应管)(1)符号(2)MOS管极性判定(3)MOS管作为开关(4)MOS管vs三极管7. 门电路(1)与门(2)或门(3)非门二、常用元器件…...

Linux-GlusterFS配置
文章目录 GlusterFS配置 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2025年02月18日19点21分 GlusterFS配置 1、分区操作 fdisk -l #查看本地磁盘 fdisk /dev/vdb #对/dev/vdb进…...

IIS asp.net权限不足
检查应用程序池的权限 IIS 应用程序池默认使用一个低权限账户(如 IIS_IUSRS),这可能导致无法删除某些文件或目录。可以通过以下方式提升权限: 方法 1:修改应用程序池的标识 打开 IIS 管理器。 在左侧导航树中&#x…...
centos 9 时间同步服务
在 CentOS 9 中,默认的时间同步服务是 chrony,而不是传统的 ntpd。 因此,建议使用 chrony 来配置和管理时间同步。 以下是使用 chrony 配置 NTP 服务的步骤: 1. 安装 chrony 首先,确保系统已安装 chrony。 在 CentOS…...
使用Java爬虫获取1688按图搜索商品(拍立淘API接口)
在电商领域,按图搜索商品(拍立淘)是一种非常实用的功能,尤其适合用户通过图片快速查找相似商品。1688开放平台提供了按图搜索商品的API接口,允许开发者通过图片获取相关的商品信息。本文将详细介绍如何使用Java爬虫技术…...

DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

常用标准库之-std::iota
定义与头文件 std::iota 是 C 标准库 <algorithm> 头文件中提供的一个算法,用于将一个连续递增的值赋给指定范围内的元素。 函数原型 template< class ForwardIt, class T > void iota( ForwardIt first, ForwardIt last, T value );ForwardIt&#…...

Linux环境Docker使用代理推拉镜像
闲扯几句 不知不觉已经2月中了,1个半月忙得没写博客,这篇其实很早就想写了(可追溯到Docker刚刚无法拉镜像的时候),由于工作和生活上的事比较多又在备考软考架构,拖了好久…… 简单记录下怎么做的…...

SCI学术论文图片怎么免费绘制:drawio,gitmind
SCI学术论文图片怎么免费绘制 目录 SCI学术论文图片怎么免费绘制overleaf怎么图片不清晰怎么办SCI学术论文图片怎么导出pdfdrawiogitmind**1. 使用在线工具****Lucidchart****2. Draw.io****3. ProcessOn****4. 使用桌面工具****Dia****5. 使用Markdown工具(如Typora)**如果你…...

伯克利 CS61A 课堂笔记 10 —— Trees
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。 目录 01 Trees 树 Ⅰ Tree Abstraction Ⅱ Implementing the Tree Abstraction 02 Tree Processing 建树过程 Ⅰ Fibonacci tree Ⅱ Tree Process…...
全局动态组件uniapp(vue)
全局动态组件uniapp(vue) 在我们很多项目中,我们需要创建一个组件,使其他在所有的路由页都存在,比如手机上的悬浮在屏幕上的圆形快捷按钮,那么我们就需要创建一个全局组件。 创建组件时我们所考虑的主要是两个点,一个…...

spring分层解耦(springboot)
三层架构 三层架构在项目文件中的分布 软件设计的原则,高内聚低耦合 高内聚:软件中各个功能模块内部的功能联系紧密,每个模块的功能实现具体 低耦合:软件中各个层/模块之间的依赖,关联的程度低 分层解耦的思想 IOC&…...

最新智能优化算法:牛优化( Ox Optimizer,OX)算法求解经典23个函数测试集,MATLAB代码
一、牛优化算法 牛优化( OX Optimizer,OX)算法由 AhmadK.AlHwaitat 与 andHussamN.Fakhouri于2024年提出,该算法的设计灵感来源于公牛的行为特性。公牛以其巨大的力量而闻名,能够承载沉重的负担并进行远距离运输。这种…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...