halcon 单通道图像转成3通道_halcon图像处理基本运算

halcon图像处理基本运算

图像处理最基本的操作包括颜色空间转换,各种代数运算,放射变换等。通过熟悉这些常见的操作,可以对图像有基本的认识,尤其是对刚开始接触视觉图像处理的人而言,熟悉这些操作,可以快速对图像有一个了解。比如能够明白RGB模型,HSI模型、HSV模型等这些颜色空间模型。能够对灰度图、彩色图有一定的认识,同时也能理解图像的位数、通道等概念。通过代数运算,能够明白图像处理其实就是对一堆二维矩阵数字进行运算。代数运算可以了解图像的数据类型,有的图像是用byte类型表示的像素值,有的使用int表示,有的是用real表示,对于某些操作,有一定的数据类型的限制。放射变换可以了解图像的平移、旋转等概念。

RGB一般是24位彩色图像,颜色数量共有224种。RGB图像由红、绿、蓝三个通道组成,每个通道的图像是一个二维数字矩阵,每个数字用8位来存储,一个像素占24位,所以是24位图像。灰度图是RGB三个分量中的值相等,即R=G=B。这三个值相等的时候,显示出来的图像就只有亮度信息,看起来就像是黑白图像。由于RGB三个通道的值相等,因此,灰度图只需要存储一个通道的数字,所以只需要用8位来存储一个像素的值,所以我们一般称为8位灰度图。RGB图像可以转换成灰度图像,有多种转换方式,常见的是对每个RGB分量设定一定的权重,然后三个分量求和得到灰度值。有时候也可以分别提取RGB的每个分量来进行图像处理,每个分量单独显示的时候,看起来也是灰度图,只是三个分量分别凸显的原RGB图像的特征有一些不同,如果进行图像处理,就要看下哪个分量能够更加凸显图像的特征,这是就取哪个分量来进行图像处理。同样的方式适用于HSI或HSV颜色模型。HSI或HSV也表示的图像三个分量,只是这个分量分别表示的图像的色调(hue)、色饱和度(saturation)和强度(intensity)或明亮值(value)。HSI和HSV只是I和V不一样,I=(R+G+B) / 3,是RGB三个分量的平均值,V = max(max(R,G),B)是RGB三个分量的最大值。由于I和V的不同,也使得S的值有所不同。

86fa53ad3f592e1a26faf73a4d470285.png

           图1 RGB颜色模型

cbc36899cb696dfaadcd8c8bd04382dd.png

           图2 HSI颜色模型

图像代数运算主要是指图像的加减乘除、对数、三角函数、指数、幂运算等,通过这些操作,熟悉图像处理实际上是对数字矩阵的处理。当然,这些运算在实际的图像处理时也是有用的,这需要根据图像来判断到底用什么方法。通过图像代数运算,也可以了解图像的数据类型,有的运算需要int数据,有的运算需要real数据,有的运算所有数据类型都可以运算。

放射变换是指图像的平移、旋转等变换。通过放射变换,可以了解图像变换的原理,实际上就是一个变换矩阵,通过变换矩阵实现坐标位置的改变。其中尤其是旋转变换比较重要,因此,在实际的图像处理中,由于各种原因,需要检测的图像的特征部分不一定是水平或垂直放置的,这时候就需要通过一定的旋转变换,将特征旋转到水平位置或垂直位置。

下面通过一个具体的例子,来看下在halcon里面怎么实现上面的操作。所用到的图像就以halcon自带的一张图像为例。

f1afdda6962b0b8bc78900219e0d3de7.png

          图3 待处理的原图

b4a9702cfbf3f7635129358415ffaff7.png

           图4 所有处理的结果图像

*读取一张彩色图像

read_image (Image,'blister/blister_reference')

*得到图像通道数

count_channels(Image,Channels)

*彩色图像转灰度图

rgb1_to_gray(Image, GrayImage)

*彩色图像分离为三个通道图像

decompose3(Image,R,G,B)

*RGB转HSV和HSI

trans_from_rgb(R,G,B,H1,S1,V1,'hsv')

trans_from_rgb(R,G,B,H2,S2,I2,'hsi')

*HSV和HIS转RGB

trans_to_rgb(H1,S1,V1,ImageRed, ImageGreen,ImageBlue, 'hsv')

trans_to_rgb(H2,S2,I2,ImageRed1,ImageGreen1, ImageBlue1, 'hsi')

*将转换后的单通道RGB合并成RGB彩色图

compose3(ImageRed,ImageGreen,ImageBlue,ImageRGB)

*图像均值模糊

mean_image(GrayImage,ImageMean, 9, 9)

*图像相加,相减,相减的绝对值,线性拉伸,图像相乘除

add_image(GrayImage, ImageMean,ImageResult, 0.5, 0)

sub_image(GrayImage,ImageMean,ImageSub, 1,128)

abs_diff_image(GrayImage,ImageMean,ImageAbsDiff,1)

scale_image(ImageAbsDiff, ImageScaled, 5,20)

mult_image(GrayImage,ImageMean,ImageResult1,0.005, 0)

div_image(GrayImage,ImageMean,ImageResult2,255, 0)

*指数、gamma变换、图像反转、对数、幂、开方

exp_image(GrayImage,ExpImage, 'e')

gamma_image(GrayImage,GammaImage,0.416667,0.055, 0.0031308, 255, 'true')

invert_image(GrayImage,ImageInvert)

log_image(GrayImage,LogImage, 'e')

pow_image(GrayImage,PowImage, 2)

sqrt_image(GrayImage,SqrtImage)

pow_image(SqrtImage, PowImage1, 3)

*图像数据格式转换

convert_image_type(GrayImage,ImageConverted,'real')

*三角函数运算

sin_image(ImageConverted, SinImage)

cos_image(ImageConverted,CosImage)

tan_image(ImageConverted,TanImage)

asin_image(SinImage,ArcsinImage)

acos_image(CosImage,ArccosImage)

atan_image(TanImage,ArctanImage)

*取两幅图像的最大值或最小值

max_image(GrayImage,ImageMean,ImageMax)

min_image(GrayImage,ImageMean,ImageMin)

*创建一个单位变换矩阵,每次根据创建的平移或、旋转或缩放矩阵对图像进行平移、旋转、缩放操作

hom_mat2d_identity(HomMat2DIdentity)

*创建平移矩阵

hom_mat2d_translate(HomMat2DIdentity,20,50,HomMat2DTranslate)

*图像平移

affine_trans_image(GrayImage,ImageAffineTrans,HomMat2DTranslate, 'constant', 'false')

get_image_size(GrayImage,Width, Height)

*创建旋转矩阵

hom_mat2d_rotate(HomMat2DIdentity,rad(45),Width/2,Height/2, HomMat2DRotate)

*图像旋转

affine_trans_image(GrayImage,ImageAffineTrans1,HomMat2DRotate, 'constant', 'false')

*创建缩放矩阵

hom_mat2d_scale(HomMat2DIdentity, 2, 1.5,Width/2, Height/2, HomMat2DScale)

*图像缩放

affine_trans_image(GrayImage,ImageAffineTrans2,HomMat2DScale, 'constant', 'false')

*根据图像得到的region,通过计算中心和方向,利用vector_angle_to_rigid得到变换矩阵,然后进行图像放射变换

threshold(GrayImage,Region, 128, 255)

shape_trans(Region, RegionTrans, 'convex')

orientation_region(RegionTrans, Phi)

area_center(RegionTrans, Area, Row, Column)

vector_angle_to_rigid(Row, Column, Phi,Row, Column, 0, HomMat2D)

affine_trans_image(GrayImage,ImageAffineTrans3,HomMat2D, 'constant', 'false')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HNOI2013】消毒

题面 题解 当只有二维时&#xff0c;就是一个二分图匹配的板子题 三维的时候就很好做了&#xff0c;暴力枚举一维的情况&#xff0c;因为\(\min(x,y,z) \sqrt{5000} < 18\)&#xff0c;于是时间复杂度有保证 代码 #include<cstdio> #include<cstring> #include…

ASP.NET MVC学前篇之Ninject的初步了解

ASP.NET MVC学前篇之Ninject的初步了解1.介绍废话几句&#xff0c;Ninject是一种轻量级的、基础.NET的一个开源IoC框架&#xff0c;在对于MVC框架的学习中会用到IoC框架的&#xff0c;因为这种IoC开源框架有很多&#xff0c;本篇的主题只有一个&#xff0c;就是让阅读过本篇幅的…

技术术语积累

目录ASCII码表ASCII打印字符ASCII非打印控制字符ASCII扩展打印字符C语言基本数据类型整型变量整型常量实数&#xff08;浮点&#xff09;类型实型&#xff08;浮点&#xff09;常量字符变量字符常量C语言中printf打印形式%2d&#xff0c;%-2d&#xff0c;%.2d&#xff0c;%02d&…

下滑加载更多js_专治:卫生间免砸砖,房顶漏水,JS堵漏王水不漏,厂家三包产品,免费成熟配方(点开看更多)...

免砸砖JS-堵漏王水不漏白色粉状&#xff0c;加水溶解后即为JS堵漏王水不漏。防水液&#xff0c;为无色透明液体&#xff0c;不燃、不爆、不腐蚀。本产品是新型多功能纳米水溶性防水剂。具有超强的渗透后微膨胀结晶功能&#xff0c;能充分填补填满物体毛细管&#xff0c;从而达到…

2010年亚运会前广州将大力推广清洁能源公交

中新社北京七月三日电 (记者 闫晓虹)当北京正在为二00八年奥运建设绿色公交的时候&#xff0c;广州公交也在为二0一0年的亚运会积极备战。广州计划在二0一0年亚运会召开之前&#xff0c;从外型设计、技术配置优化等方面进一步提高和完善LPG(液化石油气)公交车&#xff0c;并计划…

linux设置开机自启动

一.、在/etc/rc.local文件中添加自启动命令 执行命令&#xff1a; 编辑"/etc/rc.local"&#xff0c;添加你想开机运行的命令 运行程序脚本&#xff1a;然后在文件最后一行添加要执行程序的全路径。 例如&#xff0c;每次开机时要执行一个hello.sh&#xff0c;这个脚本…

JavaScript 初学者应知的 24 条最佳实践

原文&#xff1a;24 JavaScript Best Practices for Beginners &#xff08;注&#xff1a;阅读原文的时候没有注意发布日期&#xff0c;觉得不错就翻译了&#xff0c;翻译到 JSON.parse 那一节觉得有点不对路才发现是 2009 年发布的文章&#xff0c;不过还是不错的啦。另外&am…

正点原子FreeRTOS(下)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

AJAX范例大搜罗

1&#xff0e;每天一个AJAX 该网站提供了很多非常酷的AJAX例子&#xff0c;号称是每天更新一个。 网址&#xff1a;http://www.ajaxcompilation.com/ 2&#xff0e;210个AJAX框架 一个不错的提供Ajax范例的网站&#xff0c;Ajax框架已更新至210个。 网址&#xff1a;http:…

JAVA语法——经典题目01

1.什么是JAVA虚拟机&#xff1f;为什么JAVA被称作是“平面无关的编程语言”&#xff1f; JAVA虚拟机是一个可以执行JAVA字节码的虚拟机进程。JAVA源文件被编译成能被JAVA虚拟机执行的字节码文件。 JAVA被设计成允许应用程序可以运行在任意的平台&#xff0c;而不需要程序员为每…

Solaris 下 Oracle impdp 过程中出现的问题

ORA-39002: invalid operationORA-39070: Unable to open the log file.ORA-29283: invalid file operationORA-06512: at "SYS.UTL_FILE", line 475ORA-29283: invalid file operation解决方法参考1&#xff1a;今天在使用IMPDP完成数据导入的过程中遇到“ORA-39002…

小学老师的恋爱谏言

小学一年级&#xff1a; 在女同学面前脱裤子&#xff0c;女同学说我小流氓 老师语录&#xff1a;“流氓不可怕&#xff0c;就怕流氓没文化&#xff01;所以你要好好学习&#xff0c;天天向上&#xff0c;争做“有文化&#xff0c;有知识&#xff0c;有学问&#xff0c;有才气…

蓝桥杯-微生物增殖

微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次&#xff08;数目加倍&#xff09;&#xff0c;Y出生后每隔2分钟分裂一次&#xff08;数目加倍&#xff09;。 一个新出生的X&#xff0c;半分钟之后吃掉1个Y&#xff0c;并且&#xff0c;从此开始&#xff…

C socket demo

一、服务端-server.c #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #define MAXPENDING 5 #define BUFFSIZE 32 voi…

正点原子FreeRTOS(中)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

Android应用开发中的风格和主题(style,themes)

越来越多互联网企业都在Android平台上部署其客户端&#xff0c;为了提升用户体验&#xff0c;这些客户端都做得布局合理而且美观.......Android的Style设计就是提升用户体验的关键之一。Android上的Style分为了两个方面&#xff1a; Theme是针对窗体级别的&#xff0c;改变窗体…

DotText源码阅读(7) --Pingback/TrackBack

DotText源码阅读(7) --Pingback/TrackBack 博客这种服务的区别于论坛和所谓文集网站&#xff0c;很大程度上我认为是由于pingback/trackback的存在&#xff0c;使得博客这种自媒体有可以延展加入SNS的要素。所以分析博客程序&#xff0c;我们需要了解这种协议以及协议的实施细…

windows上安装mysql5.7.24

平时自己做测试的时候&#xff0c;自己安装一个mysql还是很有必要的&#xff0c;网上教程很多&#xff0c;但是自己操作过程中还是遇到了一些问题&#xff0c;这里记录一下安装过程。 一、下载mysql https://downloads.mysql.com/archives/community/ 我使用的是5.7.24的解压版…

《java设计模式》之责任链模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链&#xff08;Chain of Responsibility&#xff09;模式的&#xff1a; 责任链模式是一种对象的行为模式。在责任链模式里&#xff0c;很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递&#…

理解杀毒软件技术的意义 脱壳、虚拟、启发式介绍

如果生命是一种执着的力量&#xff0c;那么总有一种力量&#xff0c;比生命更加执着&#xff0c;就是死亡&#xff01;当你去深刻思考“死亡”这两个字的含义&#xff0c;用心去感受生命的来临与离去&#xff0c;更或许有的人&#xff0c;需要在他弥留之际&#xff0c;才能真正…