Labview图像处理 |
您所在的位置:网站首页 › labview二维图片 › Labview图像处理 |
彩色数据的存储
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 |