Labview图像处理

您所在的位置:网站首页 labview二维图片 Labview图像处理

Labview图像处理

2023-06-13 09:59| 来源: 网络整理| 查看: 265

彩色数据的存储

Labview将彩色数据以U32类型数组存储,有两种方式:RGB(红绿蓝)和HSL(色彩亮度饱和度)。

将彩色图转换为HSL格式,然后提取亮度平面。亮度平面与灰度图像是完全对应的。并且,它是能够提供灰度图像准确表达的唯一颜色平面。

HSL—Hue SaturationLuminance

RGB—Red Green Blue

存储方式如下:

备用

Red

Green

Blue

备用

Hue

Saturation

Luminance

8bit

8bit

8bit

8bit

灰度图

大多数图像处理算法都是以灰度图为基础。因此,如何得到灰度图很重要,也是首要步骤。

将一幅图转换为灰度图,就是每个像素点由原来的32位的表示方法压缩到8位表示(可能有16位、24位、32位)的算法有多种,由原来的RGB三色的分量,映射到0~255的灰度值,其方法有多种:

Gray=R*0.3+G*0.59+B*0.11

Gray=(R+G+B)/3

……

归根到底是将彩色对应到灰度值上。

在Labview的Vision开发包内,使用这个工具包的函数中需注意一点,即每个图片打开显示之前,都要给其分配一个内存区域,使用的函数为IMAQ Creat,在分配的时候,一个参数Image type需要指定。常规的使用方法是获取文件的类型后,将类型值赋给这个参数,如下图所示,即可读取到一个图片到前面板:

图1 常规读取

图2 常规读取结果

当我们需要灰度图时,很简单,只需将Image type的参数设定为GrayScale(U8)即可。

补充一些概念:

每个像素的颜色用16位二进制数表示,叫做16位图;

每个像素存放在1个Byte中,0~255分别表示不同的灰度,0表示最暗,255最亮,叫做8位图。

灰度图的处理方法(图像点运算)

1.      灰度直方图

统计各像素的灰度值,然后在图中显示出各个灰度值的点数,横坐标为灰度值0~255,纵坐标为个灰度值对应的像素点数,一般用占的百分比表示。

这个算法在Labview的Vision的工具包中是IMAQ Histograph,其中参数 Image mask不输入的时候,表示的整个图。需要某个区域时,可选择IMAQ ROIToMask这个VI。灰度直方图可方便观察每个级别的灰度值有多少个像素点。

2.      线性变换

将灰度值统一的进行放大和缩小。即对每个点进行线性运算。在labview程序中,使用IMAQ ImageToArray获取灰度图的每个像素的灰度值,是一个2D数组,然后对数组进行运算,得到一组新的灰度值。设定Xi是原灰度图第i个点的灰度值,Yi是线性变换过得灰度值,有以下公式

Yi=Xi*k+b

然后将2D灰度值数组还原成图像,使用IMAQ ArrayToImage。输入参数中,根据原图的实际情况,选择是Image Pxies(U8)还是其他参数。

程序框图略。函数参见上文中提到的。

3.      灰度拉伸

灰度拉伸类似于线性变换,区别是映射关系是一个分段函数,类似于下图所示:

图3 灰度拉伸

对分段函数分别求出k和b,进行计算即可。算法程序框图可参见如下:

图4 算法

“拉伸设置”是一个XY图,计算三个段的k、b后,集散新的灰度值,还原图像。处理结果如如下:

图5 灰度拉伸结果

可以概括为,让浅色更浅,深色更深。

4.      灰度均衡

灰度均衡,顾名思义,就是让灰度尽量的分布均匀些,从直方图上直观的看,就是让灰度分布曲线平缓一些。算法如下:

Y=255*(n0+n1+n2+……+ni)/n,i∈[0,X];其中,X为待转换的像素值,n为总像素数,ni为灰度为i的像素个数。程序框图如下:

图6 均衡算法

5.      二值化

二值化是以某一个灰度值为阈值,小于阈值为0,大于阈值为255,由此设定,可将图像进行分割。

图7 二值化结果

二值化后,即可明显的分割图像。

未完待续。。。。。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3