赞
踩
在照片的处理技巧中有一招叫做白平衡,其功能是滤除环境光的颜色,使图片更偏向物体本身的颜色。
原理很好理解,就是假设在无偏色光的条件下,图片的RGB直方图是均衡的。
以下是OpenCV实现的灰度世界法:
#include <highgui/highgui.hpp> #include <imgproc/imgproc.hpp> using namespace cv; int main() { Mat imageSource = imread("02.jpg"); imshow("原始图像", imageSource); vector<Mat> imageRGB; //RGB三通道分离 split(imageSource, imageRGB); //求原始图像的RGB分量的均值 double R, G, B; B = mean(imageRGB[0])[0]; G = mean(imageRGB[1])[0]; R = mean(imageRGB[2])[0]; //需要调整的RGB分量的增益 double KR, KG, KB; KB = (R + G + B) / (3 * B); KG = (R + G + B) / (3 * G); KR = (R + G + B) / (3 * R); //调整RGB三个通道各自的值 imageRGB[0] = imageRGB[0] * KB; imageRGB[1] = imageRGB[1] * KG; imageRGB[2] = imageRGB[2] * KR; //RGB三通道图像合并 merge(imageRGB, imageSource); imshow("白平衡调整后", imageSource); waitKey(); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。