halcon_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的值有所不同。

halcon_halcon图像处理基本运算_第1张图片

           图1 RGB颜色模型

halcon_halcon图像处理基本运算_第2张图片

           图2 HSI颜色模型

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

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

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

halcon_halcon图像处理基本运算_第3张图片

          图3 待处理的原图

halcon_halcon图像处理基本运算_第4张图片

           图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')

相关资源: 001_01_halcon_introduction.pdf
  • 点赞
  • 评论
  • 分享
    x

    海报分享

    halcon_halcon图像处理基本运算_第5张图片

    扫一扫,分享海报

  • 收藏
  • 打赏

    打赏

    weixin_39975261

    你的鼓励将是我创作的最大动力

    C币 余额
    ¥2 ¥4 ¥6 ¥10 ¥20 ¥50

    您的余额不足,请先充值哦~去充值

  • 举报
  • 关注 关注
  • 一键三连

    点赞Mark关注该博主, 随时了解TA的最新博文
已标记关键词 清除标记
图像融合方法
qq_45479499的博客
11-11 223
一、基于神经网络的 图像融合方法 DenseFuse: A Fusion Approach to Infrared and Visible Images(有代码) (1)方法概述:一种新的基于深度学习的红外 图像和可见 图像融合的方法。与传统的卷积网络相比,编码网络与卷积层,融合层和密集块相结合,其中每一层的输出彼此相连。作者尝试在编码过程中从源 图像中获取更多有用的feature,并设计了两个融合层(融合策略)以融合feature。 最后,通过解码器重建融合 图像。编码器包含两个部分(C1和DenseBlock),
10-Halcon机器视觉实例入门:图像基本运算
视觉智能
04-26 960
图像 基本 运算 1 图像相加 在Halcon中, 图像相加是按以下公式计算的: g′:=(g1+g2)∗Mult+Add g' := (g1 + g2) * Mult + Add g′:=(g1+g2)∗Mult+Add 其中,g′g'g′为输出 图像,g1g1g1和g2g2g2是输入 图像,MultMultMult是乘数因子,AddAddAdd是常量。 * 图...
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
  • weixin_39975261 : 这篇文章对你有帮助吗?作为一名程序工程师,在评论区留下你的困惑或你的见解,大家一起来交流吧!
相关推荐
halcon中怎么降低图像亮度_halcon差异运算去掉背景图像
weixin_39530647的博客
12-19 203
如果是下相机对位,有时候会碰到相机拍到复杂背景,造成需要处理的工件被背景干扰的问题。这时候有一个办法是去掉背景。一般来讲,每次拍到的背景应该是一样的,只是每次拍到的工件不一样。勇哥直接上图片与演示代码,最后介绍一下相关的算子。(图1 背景 图像)(图2 含有背景 图像的电芯)下面是代码处理的结果。(图3 电池本体之外的背景全部镂空的效果)(图4 含有膨胀区域的处理结果)read_image(b...
Halcon 图像增强
weixin_42258743的博客
07-31 1606
Halcon中增强 图像的对比度也是预处理中的一环,主要有如下方式: 1.灰度值线性变换 1)scale_image() scale_image(Image : ImageScaled : Mult, Add : )——缩放 图像的灰度值。 原理:可以理解为用一个模板扫描 图像中的每一个像素,模板中像素最大值和最小值的差作为模板中心像素点的值。 功能描述: g’ := g * Mult + Add 为当前的灰度值。由公式可以看出scale_image算子处理 图像是个线性变化,因此会扩大 图像的对比度,会让黑的
【数据预处理】:图像去均值:image mean 和 pixel mean
Jack_Kuo的博客
07-22 2万+
1.什么是均值?

对于每帧图像来说,均值分为两种:image mean 和 pixel mean。

image mean:
简单的说,读入一张彩色图像,假设是(NN3),这时候,求出image mean的话,就也是NN3,相当于把所有训练集在同一个空间位置上的像素的对应通道求了均值,也就是caffe里生成的mean.binaryproto文件,

pixel mean:
而pixe…


Halcon|图像的gamma变换、log变换和pow变换
qq_41738631的博客
01-16 3425
Halcon| 图像的gamma变换、pow变换、log变换 工业相机像元深度 我们将工业相机采集 图像的比特位数,称为像元深度,通常是8~16bit。像元深度定义了灰度由暗道亮的灰阶数,例如,对于8bit 的相机,0代表全暗(黑),255 代表全亮(白)。同理,10bit 图像有1024个灰阶,12bit 图像有4096个灰阶。 在可视化过程中,显示器一般只有8bit,对于工业相机采集到的大于8bi...
【3】Halcon_图像增强
qq_33612665的博客
08-11 521
【1】 图像取反,增加对比度,减小对比度,增加亮度,减小亮度

halcon源码

read_image (Lena, ‘C:/Users/Administrator/Desktop/lena.bmp’)
rgb1_to_gray (Lena, GrayImage)
get_image_size (GrayImage, Width, Height)
*图像取反
invert_image (GrayImage, ImageInvert)
*增加对比度
emphasize (GrayImage, ImageEm


halcon学习备忘二(图像相减算子)
05-15 6021
在我们编写halcon程序中可能常会用到tu
Halcon图像仿射变换
Major_S的博客
02-01 49
图像仿射变换 图像仿射变换 图像仿射变换 图像的变换包括仿射变换与透视变换,一般多数情况下只需要仿射变换 图像的仿射变换是指 图像的平移与旋转。 映射矩阵:在平移与旋转中,是由一个含有6个参数的矩阵组成,用来描述 图像的旋转平移关系。所谓平移关系,是指移动前 图像的位置与移动后 图像的位置之间的关系,只有有了着关系,才能进行 图像的移动。 比如:点(1,2)与点(2,3)之间的关系为[1,0,1,0,1,1]。




《数字图像处理》-(2)灰度变换与空间滤波&halcon代码
Guopinglu的博客
07-11 170
1灰度变换 最简单的形式是邻域为1x1的尺度 (即一单个像素)。在这种情况下(仅依赖于f在(x,y)点的值,T操作成为灰度级变换函数(也叫做强度映射),形式为: s=T® s和r是所定义的变量,分别是f(x,y)和g(x,y)在任意点(x,y)的灰度值。 1.1 图像反转 灰度级范围为丨0,L-1丨的 图像反转可由示于前图的反比变换获得,表达式为: s=L-1-r 用这种方式倒转 图像的强度产生 图像反转的对等 图像。这种处理尤其适用于增强嵌入于 图像暗色区域的白色或灰色细节,特别是当黑色面积占主导地位时:

1.2对


Halcon图像预处理与形态学(图像的点运算
weixin_38566632的博客
12-23 135
灰度直方图 定义 灰度直方图时灰度值的函数,描述了 图像中具有该灰度值的像素的个数,横坐标时像素的灰度级,纵坐标时该灰度出现的频率或这个灰度值像素的个数。 使用函数 gray_histo gen_region_histo histo_to_thresh 使用示例 read_image (Image, 'fabrik') *生成直方图 gray_histo (Image, Image, AbsoluteHisto, RelativeHisto) *生成直方图区域 gen_region_histo (Region
HALCON算子函数——Chapter 17 : Tools
think_fast的专栏
11-25 7193
Chapter_17:Tools 17.1  2D-Transformations 1. affine_trans_pixel   功能:对像素坐标轴进行任意的仿射二维变换。 2. affine_trans_point_2d   功能:对点进行任意的最简二维变换 3. bundle_adjust_mosaic   功能:对一幅 图像的嵌合体采取一系列调整。 4. hom_mat2d_
双三次插值图像旋转_halcon之图像拼接技术
weixin_39545310的博客
12-05 64
图像拼接技术就是针对同一场景的一系列图片,根据图片的特征,比如位置,重叠部分等,拼接成一张大幅的宽视角的 图像图像拼接要求拼接后 图像最大程度的与原图一致,失真尽可能的小,并且要尽量做到天衣无缝即没有明显的拼接线或其他拼接痕迹。为达到以上目标, 图像拼接要求具备以下条件:1: 图像应具有一定的特征性能,拼接正是通过这些特征来进行的。2: 图像需要具有重叠部分,一般情况下,这些重叠部分点 图像的1/...
Halcon关于图像的数学运算的几个算子
u012465655的专栏
05-23 4838
1.     sub_image(); sub_image是最常用的一个 图像 运算算子之一,主要的应用领域应该是 图像增强方面。在正常的工业相机拍摄的光学 图像往往并不是完美的,需要对 图像进行预处理。在预处理阶段可能会用到的 图像 运算包括,去噪,增强等等。                                                                          
001_01_halcon_introduction.pdf
05-26
HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,它节约了产品成本,缩短了软件开发周期。

halcon:底层功能算法多,运算性能快,开发需要一定软件功底和图像处理理论。


图像算法之二维傅里叶+低通滤波(灰度图像
老狼的专栏
12-30 119
1、函数定义

// 二维傅里叶+低通滤波
struct stPGMImage* DFT2(struct stPGMImage* image, double D0 = 5.0);

2、函数实现

inline int Padding(int n)
{
double lg = log10((double)n) / log10(2.0);
if ((lg - (int)lg) == 0)
{
return n;
}

int N = pow(2.0, ((int)lg + 1));
re
Halcon学习笔记(三)---数据类型
liyuqian199695的博客
03-24 9994
Halcon学习笔记(三)---数据类型

halcon只能在单独行进行注释,不能在语句后面进行注释。
1、tuple
赋值符号“:=”
tuple算子:

(1)变量定义与加减乘除运算
代码如下:
**hal-con中的几种变量
*1.tuple
a:=1
b:=[2,3]
*将a和b合并起来
c:=[a,b]
*求c中有多少个元素
num:=|c|
*


[Halcon] 图像增强相关算子及其分类
Loewen丶的小窝
08-07 9478
Halcon中增强 图像的对比度也是预处理中的一环,主要有如下方式:

灰度变换(scale_image)
原理:可以理解为用一个模板扫描图像中的每一个像素,模板中像素最大值和最小值的差作为模板中心像素点的值。
作用:拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。
emphasize:增强图像的高频区域(边缘和拐角),使图像看起来更清晰。
直方图均衡化(equ_histo_image)
灰度…


halcon学习 tuple之算术运算3
majunfu
09-10 5500
//计算数组的自然对数 void TupleLog() { HTuple tuple1; for (int i = 0; i < 10; i++) { tuple1[i] = i *10+2; } HTuple result = tuple1.TupleLog(); for (int i = 0; i < 10; i++) {
Halcon学习笔记(三)---数据类型
Wanda && Aidem
05-18 669
Halcon学习笔记(三)---数据类型halcon只能在单独行进行注释,不能在语句后面进行注释。1、tuple(元组,重数)赋值符号“:=”tuple算子:(1)变量定义与加减乘除 运算代码如下:**hal-con中的几种变量 *1.tuple a:=1 b:=[2,3]*将a和b合并起来 c:=[a,b]    【[1,2,3]】*求c中有多少个元素 num:=|c|    【3】*a中元素和b...
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页

热门文章

  • mgg格式怎么转换为mp3_MP3音频文件怎么转换?学会这个玩转音频格式转换 1499
  • 联想m7400pro更换墨粉盒怎么清零_联想几种机型原装硒鼓加粉清零方法 860
  • creo分割实体_CREO如何快速分割实体面造型 726
  • 苹果手机代数_苹果一共几代? 558
  • java开发用mac方便吗_你不得不用的MAC软件开发工具软件,个个万里挑一 542

最新文章

  • js提交php,JS配合PHP高效解决input超多的表单提交
  • 加开关java,关于Java / CSS:Java / CSS-Vaadin:添加开关按钮背景
  • 微信公众平台php自定义菜单,php实现微信公众号创建自定义菜单
2021
03月 5篇
02月 27篇
01月 23篇
2020年169篇
            

最新文章

  • js提交php,JS配合PHP高效解决input超多的表单提交
  • 加开关java,关于Java / CSS:Java / CSS-Vaadin:添加开关按钮背景
  • 微信公众平台php自定义菜单,php实现微信公众号创建自定义菜单
2021
03月 5篇
02月 27篇
01月 23篇
2020年169篇

你可能感兴趣的:(Halocn学习,计算机视觉)