分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
关于HSI颜色空间参照维基百科:http://zh.wikipedia.org/wiki/HSI%E8%89%B2%E5%BD%A9%E5%B1%AC%E6%80%A7%E6%A8%A1%E5%BC%8F
核心的转换公式:
RGB-->HSI
截图来自中科院刘定生老师的《数字图像处理与分析》课件。
HSI-->RGB
具体的数学公式参照冈萨雷斯版《数字图像处理(第三版)》432-434页,中译版的260-261页。
下面贴代码:
1 #include "opencv_libs.h" 2 #include <highgui.h> 3 #include <cv.h> 4 #include <math.h> 5 6 /* 7 * 描述:实现RGB颜色模型到HSI颜色模型之间的相互转换 8 * 作者:qdsclove(qdsclove@gmail.com) 9 * 时间:16:01 4/17 星期三 2013 10 */ 11 12 // 将HSI颜色空间的三个分量组合起来,便于显示 13 IplImage* catHSImage(CvMat* HSI_H, CvMat* HSI_S, CvMat* HSI_I) 14 { 15 IplImage* HSI_Image = cvCreateImage( cvGetSize( HSI_H ), IPL_DEPTH_8U, 3 ); 16 17 for(int i = 0; i < HSI_Image->height; i++) 18 { 19 for(int j = 0; j < HSI_Image->width; j++) 20 { 21 double d = cvmGet( HSI_H, i, j ); 22 int b = (int)(d * 255/360); 23 d = cvmGet( HSI_S, i, j ); 24 int g = (int)( d * 255 ); 25 d = cvmGet( HSI_I, i, j ); 26 int r = (int)( d * 255 ); 27 28 cvSet2D( HSI_Image, i, j, cvScalar( b, g, r ) ); 29 } 30 } 31 32 return HSI_Image; 33 } 34 35 // 将HSI颜色模型的数据转换为RGB颜色模型的图像 36 IplImage* HSI2RGBImage(CvMat* HSI_H, CvMat* HSI_S, CvMat* HSI_I) 37 { 38 IplImage * RGB_Image = cvCreateImage(cvGetSize(HSI_H), IPL_DEPTH_8U, 3 ); 39 40 int iB, iG, iR; 41 for(in