LabVIEW Vision两幅图像叠加的三种方法
有些时候可能需要叠加两幅图像,这时可以直接使用运算中的加来叠加两幅图像:
两幅图像直接叠加效果图
两幅图像直接叠加程序框图
但是从上面的效果图中可以看到。如果两幅图像都比较白时,则会丢失数据。上面的是两幅8位灰度图的叠加,输出的图像仍然是8位图。而8位图像最大值为255。这时,只要两幅图像对应的像素点的值之和大于255时,就会变成全白的,也就是溢出丢失数据。例如,1图中的点灰度值为200,2图中对应点灰度值为180时,这时两个点之和为380。但是在输出的叠加图像中,只能有最大255的灰度值。可以从上面的效果图中看到,两幅图像的卡片处因为比较白,叠加后丢失了很多信息,很多都变成全白的了。
一种比较有效避免这种问题的方法,就是将原始U8灰度图像转换成U16图像,然后再使用加法计算其值。再将叠加后的U16位图像转换成U8图像,这时叠加后的图像不会丢失信息。但是两幅图像的所有信息会变化。或者是先将原始的两个U8灰度图像分别除以2,这时最大值只有128,然后再叠加,这时最大值为256,会强制变成255,但时这时只会丢失1个灰度级的信息。
U8转U16后叠加效果
U8转16后叠加程序框图
使用这种方法,可以对移位的位数进行控制。例如可以移位2位,这时叠加后的图像会更黑一些:
U8转U16后叠加效果-移位2位
下面的效果则为U8除以2以后再叠加
U8除以2后再叠加效果图
U8除以 2后再叠加程序框图
当然,其实还有一些方法,如NI的范例中就还有一种叠加方法Image to EDVR。不过个人觉得不是很直接。大家有兴趣可以去研究下。NI范围的运算符下的平均值,也是转换成U16叠加后求平均值后再转换成U8的。
NI范例-Image to EDVR