opencv实现将RGB图像转换到HSI空间
来源:互联网 发布:手机淘宝怎么改号码 编辑:程序博客网 时间:2024/05/16 08:03
首先是将rbg图像转换为HSI空间内,由于opencv3库中没有直接转换的函数,因此这个转换过程需要自己实现。转换的数学公式如下:
opencv实现的代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat src = imread("D:\\VCprogress\\ConsoleApplication2\\三原色.bmp");
Mat dst = Mat(Size(src.rows, src.cols), CV_8UC3);
vector <Mat> channels;
split(src, channels);
Mat Hvalue = channels.at(0);
Mat Svalue = channels.at(1);
Mat Ivalue = channels.at(2);
for (int i = 0; i < src.rows; ++i)
for (int j = 0; j <src.cols; ++j)
{
double H, S, I;
int Bvalue = src.at<Vec3b>(i, j)(0);
int Gvalue = src.at<Vec3b>(i, j)(1);
int Rvalue = src.at<Vec3b>(i, j)(2);
//求Theta =acos((((Rvalue - Gvalue) + (Rvalue - Bvalue)) / 2) / sqrt(pow((Rvalue - Gvalue), 2) + (Rvalue - Bvalue)* //(Gvalue - Bvalue)));
double numerator = ((Rvalue - Gvalue) + (Rvalue - Bvalue)) / 2;
double denominator = sqrt(pow((Rvalue - Gvalue), 2) + (Rvalue - Bvalue)*(Gvalue - Bvalue));
if (denominator == 0) H = 0;
else {
double Theta = acos(numerator / denominator) * 180 / 3.14;
if (Bvalue <= Gvalue)
H = Theta;
else H = 360 - Theta;
}
Hvalue.at<uchar>(i, j) = (int)(H * 255 / 360); //为了显示将[0~360]映射到[0~255]
//求S = 1-3*min(Bvalue,Gvalue,Rvalue)/(Rvalue+Gvalue+Bvalue);
int minvalue = Bvalue;
if (minvalue > Gvalue) minvalue = Gvalue;
if (minvalue > Rvalue) minvalue = Rvalue;
numerator = 3 * minvalue;
denominator = Rvalue + Gvalue + Bvalue;
if (denominator == 0) S = 0;
else {
S = 1 - numerator / denominator;
}
Svalue.at<uchar>(i, j) = (int)(S * 255);//为了显示将[0~1]映射到[0~255]
I = (Rvalue + Gvalue + Bvalue) / 3;
Ivalue.at<uchar>(i, j) = (int)(I);
}
merge(channels, dst);
namedWindow("HSI");
imshow("HSI", dst);
imwrite("HSI空间图像.jpg", dst);
原始图像如下: HSI空间转换后的图像如下:
- opencv实现将RGB图像转换到HSI空间
- 利用Matlab将RGB图像转换到HSI空间
- OPENCV中 RGB 转换到 HSI空间
- OPENCV 从RGB空间转换到HSI空间
- 使用OpenCV实现RGB、HSI、CMYK颜色空间的转换
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- 图像的RGB颜色空间和HSI空间的转换
- RGB到HSI转换
- RGB到HSI转换
- 【OpenCV学习笔记】3.1 RGB图像转换为HSI图像
- 图像的空间转换 HSI→RGB 和 RGB→HSI
- matlab RGB到HSI的彩色转换及实现
- matlab RGB到HSI的彩色转换及实现
- matlab RGB到HSI的彩色转换及实现
- 图像色彩空间之RGB与HSI
- 九周九分布式服务-架构演进
- JAX_RS
- 敏捷测试人员如何做好敏捷测试
- jQuery操作input值的各种方法总结
- android的随机之魂
- opencv实现将RGB图像转换到HSI空间
- 设置Hbase的环境变量
- git之从本地同步到远端的方法
- android studio升级3.0,gradle升级项目报错
- 帝国CMS后台美化模板 后台风格修改 帝国CMS后台模板
- 架构君公众号推荐 第二期
- LaTeX各种表格
- 自定义模块的创建和使用
- 关于python正则表达式