halcon的灰度图转热力图
主要是根据灰色图像的灰度值来生成彩色图像
下图为原始图
步骤:
1.首先读取视差图像,这里的图像是单通道的,Byte类型。
2.将灰度范围扩展到0~255以内。
3.创建一张空图像,这个用于合成一张新图的时候填补通道用。
4.颜色空间转换,创建一张HSV空间的图,灰度图放在H通道中,用于显示各种何样的色调。同时生成R\G\B通道图像。
5.在将RGB通道合并,即可得到彩色深度图。
read_image (Image, '截图1.png')
min_max_gray (Image, Image, 0, Min, Max, Range)
scale_image (Image, scaledImage, 255/(Max - Min), (-Min)* 255/(Max - Min))
gen_image_proto (Image, ImageClear, 255)
*把RGB转换到HSV通道
*trans_from_rgb(Red, Green,Blue, H, S, V, 'hsv')
*将图像从hsv颜色空间转换为RGB颜色空间
*参数1:H通道
*参数2:S通道
*参数3:V通道
*参数4:红色通道
*参数5:绿色通道
*参数6:蓝色通道
*参数7:'hsv'
trans_to_rgb (scaledImage,ImageClear, ImageClear, ImageRed, ImageGreen, ImageBlue, 'hsv')
compose3 (ImageRed, ImageGreen, ImageBlue, MultiChannelImage)
dev_display(MultiChannelImage)
进阶——生成彩虹
步骤:生成0-255的灰度图,然后对每一个像素赋值
* 创建灰度值为0的图像
height:=180
width:=255
gen_image_const (Image, 'byte', height, width)
* 计算图像尺寸
get_image_size (Image, Width, Height)
* 指定图像像素为同一灰度值
gen_image_proto (Image, ImageCleared, 127)
* 得到图像的定义域
get_domain (Image, Domain)
* 裁剪图像得到新图像
crop_domain (Image, ImagePart)
* 获取某像素点的灰度值
get_grayval (ImagePart,width-1 , height-1, Grayval)
gray_num:=0
* 开始循环
for i := 0 to width-1 by 1
for j := 0 to height-1 by 1
* 设置某像素点的灰度值
*设置Image图像中坐标为(Row,Column)的灰度值
set_grayval (ImagePart, i, j, gray_num)
gray_num:=gray_num+1
endfor
gray_num:=0
endfor
min_max_gray (ImagePart, ImagePart, 0, Min, Max, Range)
scale_image (ImagePart, scaledImage, 255/(Max - Min), (-Min)* 255/(Max - Min))
gen_image_proto (ImagePart, ImageClear, 255)
trans_to_rgb (scaledImage,ImageClear, ImageClear, ImageRed, ImageGreen, ImageBlue, 'hsv')
compose3 (ImageRed, ImageGreen, ImageBlue, MultiChannelImage)
dev_display(MultiChannelImage)
备注说明:因为是对每一个像素进行赋值,所以运算的比较慢,可以将height和width改成比较小的值,速度会快点