归一化的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)
还没有任何评论哟~
