Advertisement

归一化的RGB值

阅读量:

在图像的RGB色彩空间中施加归一化处理,在特定条件下能够有效地消除光照与阴影的影响,并提供一种简洁而有效的解决方案

假设RGB代表原图像某点的像素值,rgb表示归一化之后的值,则

r = R / (R+G+B);g = G / (R+G+B);b = B / (R+G+B);

实现归一化RGB的方法如下:

// 对输入的原始RGB图像获取对应的归一化图像

IplImage* NormalizeImage(IplImage *img)

{

1、创建归一化的图像;

IplImage* imgavg = cvCreateImage(cvGetSize(img), 8, 3);

2、获取图像高度和宽度信息,设置epslon的目的是防止除0的操作产生;

宽度被赋值为图像的宽度;高度被赋值为图像的高;红、绿、蓝值被声明为整数类型;总和初始化为一个极小的正数。

3、计算归一化的结果,并替换掉原像素值;

for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) {

使用cvGet2D函数获取图像中指定位置像素的属性。
随后分别提取该像素点的红、绿、蓝通道值。
为了避免在归一化过程中出现除以零的情况,
我们会在各通道值之和前加入一个极小值epslon。
然后构造一个归一化后的颜色标量,
其每个通道分

全部评论 (0)

还没有任何评论哟~