机器视觉--图像的运算(乘法)
一、引言
在图像处理领域,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 是一款功能强大且广泛应用的机器视觉软件库。它提供了丰富的算子和工具,能够满足各种复杂的图像处理需求。图像的乘法运算作为其中一种基础操作,虽然不像一些边缘检测、形态学处理等操作那样被频繁提及&…...
蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
Day 5:哈希表应用(两数之和、重复元素判断) 一、哈希表(Hash Table)基础 1. 什么是哈希表? 哈希表(Hash Table) 是一种键值对(key-value)存储的数据结构&…...
Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析
#作者:孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数(扩缩容副本)1.3、Partition Reassign场景限流1.4、节点内副本移动到不…...
vue 接口传formdata
在Vue中,如果你需要向服务器发送FormData对象,通常是为了上传文件或者需要发送表单数据。FormData是一个非常有用的工具,因为它可以直接使用表单元素的值以及文件内容,并以一种浏览器兼容的方式来发送这些数据。下面是如何在Vue中…...
图像处理篇---基本OpenMV图像处理
文章目录 前言1. 灰度化(Grayscale)2. 二值化(Thresholding)3. 掩膜(Mask)4. 腐蚀(Erosion)5. 膨胀(Dilation)6. 缩放(Scaling)7. 旋转…...
DeepSeek预测25考研分数线
25考研分数马上要出了。 目前,多所大学已经陆续给出了分数查分时间,综合往年情况来看,每年的查分时间一般集中在2月底。 等待出成绩的日子,学子们的心情是万分焦急,小编用最近爆火的“活人感”十足的DeepSeek帮大家预…...
数据融合的经典模型:早期融合、中期融合与后期融合的对比
数据融合是处理多源数据时非常重要的技术,尤其是在多模态学习、传感器网络和智能系统中。它的目标是将来自不同来源、不同模态的数据进行有效结合,从而获得更准确、更全面的信息。在数据融合的过程中,不同的融合策略能够在性能、效率和应用场…...
Linux环境Docker使用代理推拉镜像
闲扯几句 不知不觉已经2月中了,1个半月忙得没写博客,这篇其实很早就想写了(可追溯到Docker刚刚无法拉镜像的时候),由于工作和生活上的事比较多又在备考软考架构,拖了好久…… 简单记录下怎么做的…...
LabVIEW用CANopen的设备属性配置与心跳消息和PDO读取
本示例展示了如何通过SDO(服务数据对象)配置设备属性,以及如何读取从设备周期性发送的心跳消息和PDO(进程数据对象)消息。通过该示例,可以有效地进行设备配置并实现数据监控,适用于CANopen网络中…...
DeepSeek01-本地部署大模型
一、ollama简介: 什么是 Ollama? Ollama 是一个用于本地部署和管理大模型的工具。它提供了一个简单的命令行界面, 使得用户可以轻松地下载、运行和管理各种大模型。Ollama 支持多种模型格式, 并且可以与现有的深度学习框架&#x…...
python学opencv|读取图像(七十五)人脸识别:Fisherfaces算法和LBPH算法
【1】引言 前序学习进程中,已经掌握了使用Eigenfaces算法进行的人脸识别。相关文章链接为: python学opencv|读取图像(七十四)人脸识别:EigenFaces算法-CSDN博客 在此基础上,学习剩余两种人脸识别算法&am…...
UMLS数据下载及访问
UMLS数据申请 这个直接在官网上申请即可,记得把地址填全,基本都会拿到lisence。 UMLS数据访问 UMLS的数据访问分为网页访问,API访问以及数据下载后的本地访问,网页访问,API访问按照官网的指示即可,这里主…...
UE_C++ —— Container TArray
目录 一,TArray 二,Creating and Filling an Array 三,Iteration 四,Sorting 五,Queries 六,Removal 七,Operators 八,Heap 九,Slack 十,Raw Memor…...
第435场周赛:奇偶频次间的最大差值 Ⅰ、K 次修改后的最大曼哈顿距离、使数组包含目标值倍数的最少增量、奇偶频次间的最大差值 Ⅱ
Q1、奇偶频次间的最大差值 Ⅰ 1、题目描述 给你一个由小写英文字母组成的字符串 s 。请你找出字符串中两个字符的出现频次之间的 最大 差值,这两个字符需要满足: 一个字符在字符串中出现 偶数次 。另一个字符在字符串中出现 奇数次 。 返回 最大 差值…...
模拟解决哈希表冲突
目录 解决哈希表冲突原理: 模拟解决哈希表冲突代码: 负载因子: 动态扩容: 总结: HashMap和HashSet的总结: 解决哈希表冲突原理: 黑色代表一个数组,当 出现哈希冲突时࿰…...
UIView 与 CALayer 的联系和区别
今天说一下UIView 与 CALayer 一、UIView 和 CALayer 的关系 在 iOS 开发中,UIView 是用户界面的基础,它负责处理用户交互和绘制内容,而 CALayer 是 UIView 内部用于显示内容的核心图层(Layer)。每个 UIView 内部都有…...
Android 10.0 移除wifi功能及相关菜单
介绍 客户的机器没有wifi功能,所以需要删除wifi相关的菜单,主要有设置-网络和互联网-WLAN,长按桌面设置弹出的WALN快捷方式,长按桌面-微件-设置-WLAN。 修改 Android10 上直接将config_show_wifi_settings改为false,这样wifi菜单的入口就隐…...
电力与能源杂志电力与能源杂志社电力与能源编辑部2024年第6期目录
研究与探索 含电动汽车虚拟电厂的优化调度策略综述 黄灿;曹晓满;邬楠; 643-645663 含换电站的虚拟电厂优化调度策略综述 张杰;曹晓满;邬楠;杨小龙; 646-649667 考虑虚拟负荷研判的V2G储能充电桩设计研究 徐颖;张伟阳;陈豪; 650-654 基于状态估计的电能质量监测…...
简站主题:简洁、实用、SEO友好、安全性高和后期易于维护的wordpress主题
简站主题以其简洁的设计风格、实用的功能、优化的SEO性能和高安全性而受到广泛好评。 简洁:简站主题采用扁平化设计风格,界面简洁明了,提供多种布局和颜色方案,适合各种类型的网站,如个人博客和企业网站。 实用&…...
Redis(高阶篇)03章——缓存双写一致性之更新策略探讨
一、反馈回来的面试题 一图你只要用缓存,就可能会涉及到redis缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性的问题双写一致性,你先动缓存redis还是数据库mysql哪一个&#x…...
【Git】说说Git中开发测试的使用Git分支Git标签的使用场景
一、环境介绍 dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。pre环境:灰度环…...
Spring Boot中使用Server-Sent Events (SSE) 实现实时数据推送教程
一、简介 Server-Sent Events (SSE) 是HTML5引入的一种轻量级的服务器向浏览器客户端单向推送实时数据的技术。在Spring Boot框架中,我们可以很容易地集成并利用SSE来实现实时通信。 二、依赖添加 在Spring Boot项目中,无需额外引入特定的依赖&#x…...
【Golang学习之旅】Go 语言微服务架构实践(gRPC、Kafka、Docker、K8s)
文章目录 1. 前言:为什么选择Go语言构建微服务架构1.1 微服务架构的兴趣与挑战1.2 为什么选择Go语言构建微服务架构 2. Go语言简介2.1 Go 语言的特点与应用2.2 Go 语言的生态系统 3. 微服务架构中的 gRPC 实践3.1 什么是 gRPC?3.2 gRPC 在 Go 语言中的实…...
数据结构:栈(Stack)及其实现
栈(Stack)是计算机科学中常用的一种数据结构,它遵循先进后出(Last In, First Out,LIFO)的原则。也就是说,栈中的元素只能从栈顶进行访问,最后放入栈中的元素最先被取出。栈在很多应用…...
DeepSeek在linux下的安装部署与应用测试
结合上一篇文章,本篇文章主要讲述在Redhat linux环境下如何部署和使用DeepSeek大模型,主要包括ollama的安装配置、大模型的加载和应用测试。关于Open WebUI在docker的安装部署,Open WebUI官网也提供了完整的docker部署说明,大家可…...
Next.js【详解】获取数据(访问接口)
Next.js 中分为 服务端组件 和 客户端组件,内置的获取数据各不相同 服务端组件 方式1 – 使用 fetch export default async function Page() {const data await fetch(https://api.vercel.app/blog)const posts await data.json()return (<ul>{posts.map((…...
pnpm, eslint, vue-router4, element-plus, pinia
利用 pnpm 创建 vue3 项目 pnpm 包管理器 - 创建项目 Eslint 配置代码风格(Eslint用于规范纠错,prettier用于美观) 在 设置 中配置保存时自动修复 提交前做代码检查 husky是一个 git hooks工具(git的钩子工具,可以在特定实际执行特…...
将jar安装到Maven本地仓库中
将jar安装到Maven本地仓库中 1. 使用 mvn install:install-file 命令模版示例 2.项目中添加依赖 将一个 .jar 文件安装到 Maven 本地仓库中是一个常见的操作,尤其是在你想要在本地测试一个尚未发布到中央仓库的库时。以下是如何将 .jar 文件安装到 Maven 本地仓库的…...
Spring 和 Spring MVC 的关系是什么?
Spring和Spring MVC的关系就像是“大家庭和家里的小书房”一样。 Spring是一个大家庭,提供了各种各样的功能和服务,比如管理Bean的生命周期、事务管理、安全性等,它是企业级应用开发的全方位解决方案。这个大家庭里有很多房间,每个…...
Ollama ModelFile(模型文件)
1. 什么是 Modelfile? Modelfile 是 Ollama 的配置文件,用于定义和自定义模型的行为。通过它,你可以: 基于现有模型(如 llama2、mistral)创建自定义版本 调整生成参数(如温度、重复惩罚&#…...
基于python深度学习遥感影像地物分类与目标识别、分割实践技术应用
我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…...
(蓝桥杯——10. 小郑做志愿者)洛斯里克城志愿者问题详解
题目背景 小郑是一名大学生,她决定通过做志愿者来增加自己的综合分。她的任务是帮助游客解决交通困难的问题。洛斯里克城是一个六朝古都,拥有 N 个区域和古老的地铁系统。地铁线路覆盖了树形结构上的某些路径,游客会询问两个区域是否可以通过某条地铁线路直达,以及有多少条…...
基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例
简简单单 Online zuozuo :本心、输入输出、结果 文章目录 基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例前言下载 Ollama实际部署所需的硬件要求设置 LLM 使用 GPU ,发挥 100% GPU 性能Ollama 大模型管理命令大模型的实际运行资源消耗基于 Ollam…...
大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?
简介:在人工智能飞速发展的今天,大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作,还是科研辅助、代码生成,大模型的身影无处不在。然而,面对市场上琳琅满目的工具,如何挑选最适合自己的那…...
【05】密码学与隐私保护
5-1 零知识证明 零知识证明介绍 零知识证明的概念 设P(Prover)表示掌握某些信息,并希望证实这一事实的实体,V(Verifier)是验证这一事实的实体。 零知识证明是指P试图使V相信某一个论断是正确的,但却不向…...
Flink SQL与Doris实时数仓Join实战教程(理论+实例保姆级教程)
目录 第一章:Regular Joins 深度解析 1.1 核心原理与适用场景 1.2 电商订单 - 商品实时关联案例 1.2.1 数据流设计 1.2.2 Doris 表设计优化 1.2.3 性能调优要点 第二章:Interval Joins 实战应用 2.1 时间区间关联原理 2.2 优惠券使用有效性验证 2.2.1 业务场景说明 …...
DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
68页PDF | 数据安全总体解决方案:从数据管理方法论到落地实践的全方位指南(附下载)
一、前言 这份报告旨在应对数字化转型过程中数据安全面临的挑战,并提供全面的管理与技术体系建设框架。报告首先分析了数字化社会的发展背景,强调了数据安全在国家安全层面的重要性,并指出数据安全风险的来源和防护措施。接着,报…...
【Github每日推荐】-- 2024 年项目汇总
1、AI 技术 项目简述OmniParser一款基于纯视觉的 GUI 智能体,能够准确识别界面上可交互图标以及理解截图中各元素语义,实现自动化界面交互场景,如自动化测试、自动化操作等。ChatTTS一款专门为对话场景设计的语音生成模型,主要用…...
【Spring详解一】Spring整体架构和环境搭建
一、Spring整体架构和环境搭建 1.1 Spring的整体架构 Spring框架是一个分层架构,包含一系列功能要素,被分为大约20个模块 Spring核心容器:包含Core、Bean、Context、Expression Language模块 Core :其他组件的基本核心ÿ…...
Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例
搞个引言 在 Spring 框架的开发中,依赖注入(Dependency Injection,简称 DI)是它的一个核心特性,它能够让代码更加模块化、可测试,并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…...
Machine Learning:Optimization
文章目录 局部最小值与鞍点 (Local Minimum & Saddle Point)临界点及其种类判断临界值种类 批量与动量(Batch & Momentum)批量大小对梯度下降的影响动量法 自适应学习率AdaGradRMSPropAdam 学习率调度优化总结 局部最小值与鞍点 (Local Minimum & Saddle Point) 我…...
wordpress get_footer();与wp_footer();的区别的关系
在WordPress中,get_footer() 和 wp_footer() 是两个不同的函数,它们在主题开发中扮演着不同的角色,但都与页面的“页脚”部分有关。以下是它们的区别和关系: 1. get_footer() get_footer() 是一个用于加载页脚模板的函数。它的主…...
Windows Docker运行Implicit-SVSDF-Planner
Windows Docker运行GitHub - ZJU-FAST-Lab/Implicit-SVSDF-Planner: [SIGGRAPH 2024 & TOG] 1. 设置环境 我将项目git clone在D:/Github目录中。 下载ubuntu20.04 noetic镜像 docker pull osrf/ros:noetic-desktop-full-focal 启动容器,挂载主机的D:/Github文…...
设计模式14:职责链模式
系列总链接:《大话设计模式》学习记录_net 大话设计-CSDN博客 1.概述 职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理者链传递,直到有一个处理者能够处理该请求。这种模式通过…...
Golang GORM系列:GORM并发与连接池
GORM 是一个流行的 Go 语言 ORM(对象关系映射)库,用于简化数据库操作。它支持连接池和并发访问功能,这些功能对于高性能、高并发的应用场景非常重要。本文结合示例详细介绍gorm的并发处理能力,以及如何是哟个连接池提升…...
linux笔记:shell中的while、if、for语句
在Udig软件的启动脚本中使用了while循环、if语句、for循环,其他内容基本都是变量的定义,所以尝试弄懂脚本中这三部分内容,了解脚本执行过程。 (1)while循环 while do循环内容如下所示,在循环中还用了expr…...
【Java】逻辑运算符详解:、|| 与、 | 的区别及应用
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Java 文章目录 💯前言💯一、基本概念与运算符介绍💯二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. …...
Java 设计模式之解释器模式
文章目录 Java 设计模式之解释器模式概述UML代码实现 Java 设计模式之解释器模式 概述 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定…...
关于前后端分离跨域问题——使用DeepSeek分析查错
我前端使用ant design vue pro框架,后端使用kratos框架开发。因为之前也解决过跨域问题,正常是在后端的http请求中加入中间件,设置跨域需要通过的字段即可,代码如下所示: func NewHTTPServer(c *conf.Server, s *conf…...