opencv 学习之 色偏检测
来源:互联网 发布:mac怎么安装nodejs 编辑:程序博客网 时间:2024/06/06 09:42
先看一段代码:
#include "cv.h"#include "highgui.h"#include "iostream"#include "math.h"using namespace cv;/**********************************************************************************函数描述: color 计算图像的色偏度以及色偏方向 *函数参数: image 彩色 BGR 图片* cast 计算出的偏差值,小于1表示比较正常,大于1表示存在色偏 * da 红/绿色偏估计值,da大于0,表示偏红;da小于0表示偏绿 * db 黄/蓝色偏估计值,db大于0,表示偏黄;db小于0表示偏蓝 **********************************************************************************/void color(IplImage * image){IplImage * lab = cvCreateImage(cvGetSize(image), image->depth, image->nChannels); cvCvtColor(image, lab, CV_BGR2Lab);double a=0;double b=0;int lista[256];int listb[256]; for(int i=0; i<256; i++) { lista[i] = 0;listb[i] = 0; } CvScalar scalar;for(int i=0; i<lab->height; i++){for(int j=0; j<lab->width; j++){scalar = cvGet2D(lab, i, j);a += (scalar.val[1]-128);b += (scalar.val[2]-128);int x = (int)scalar.val[1];lista[x]++;int y = (int)scalar.val[2];listb[y]++;}} double da = a/(lab->height * lab->width); double db = b/(lab->height * lab->width); double d = sqrt(da*da + db*db); double ma=0, mb=0; for(int i=0;i<256;i++) { ma += abs(i-128-da)*lista[i]; mb += abs(i-128-db)*listb[i]; } ma /= (lab->height * lab->width); mb /= (lab->height * lab->width); double m = sqrt(ma*ma + mb*mb); double cast = d/m;printf("cast2 : %f\n", cast); return; }<pre name="code" class="cpp"><pre name="code" class="cpp">int main(){CvCapture * capture = cvCreateFileCapture("d:\\picture\\video.avi");IplImage * frame;cvNamedWindow("video", CV_WINDOW_AUTOSIZE);int count=0;while(true){count++;frame = cvQueryFrame(capture);if(!frame) break;cvShowImage("video", frame);if(!(count%10)){printf("f : %d\n", count);color(frame);}if(cvWaitKey(10)==27) break;}cvReleaseCapture(&capture);cvDestroyWindow("video");return 0;}
检测色偏,常用方法是将图像转到Lab色彩空间。L表示亮度,a 表示红/绿 分量,b 表示黄/蓝分量。通常存在色偏的图像,在 a 和 b 分量上的均值会偏离原点很远,方差也会偏小;通过计算图像在 a 和 b 分量上的均值和方 差,就可评估图像是否存在色偏。
0 2
- opencv 学习之 色偏检测
- opencv 学习之 图像色偏、清晰度、亮度检测
- opencv 学习之 亮度检测
- opencv 学习之 清晰度检测
- opencv 学习之 亮度检测
- opencv+色偏检测
- Opencv学习之图像边缘检测
- opencv 学习之检测角点
- opencv学习之角点检测
- Opencv学习之边缘检测方法
- Opencv学习之角点检测
- opencv学习之 特征检测与匹配
- OpenCV学习之Canny边缘检测
- OpenCV学习之角点检测
- OpenCV学习之Hough变换检测直线
- OpenCV学习之Hough变换检测圆
- OpenCV学习之运动模板检测
- OpenCV入门学习之边缘检测
- 实用外企office常用英语
- JAVA对double或者float的浮点数精度计算控制方法
- 十大最值得一看的英式发音电影(组图)
- 双语:28岁前应该尽早知道的16个道理
- 验证数字的正则表达式集
- opencv 学习之 色偏检测
- Java代码优化策略
- 常用正则表达式
- 视觉直观感受7种常用算法
- 环境: Ubuntu12.04 上的Bumblebee 和 CUDA 开发环境配置
- 项目总结
- Design by Contract(契约式设计)
- 发个试试的方式的发生地方
- HSQLDB使用总结