c++根据hsi图像编程实现图像增强
时间: 2023-08-04 17:14:23 浏览: 46
图像增强是一种常见的图像处理方法,可以改善图像的视觉效果和质量。其中,HSI(色相、饱和度、亮度)是一种常用的颜色模型,可以将颜色信息分离成三个独立的通道,便于进行图像增强。
下面是一个简单的C++代码,实现了对HSI图像的增强:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void enhanceHSI(Mat& image) {
// 转换为HSI
Mat hsiImage;
cvtColor(image, hsiImage, COLOR_BGR2HSV);
// 对亮度通道进行直方图均衡化
vector<Mat> hsiChannels;
split(hsiImage, hsiChannels);
equalizeHist(hsiChannels[2], hsiChannels[2]);
merge(hsiChannels, hsiImage);
// 转换回BGR
cvtColor(hsiImage, image, COLOR_HSV2BGR);
}
int main() {
Mat image = imread("test.jpg");
if (image.empty()) {
cout << "读取图像失败!" << endl;
return -1;
}
enhanceHSI(image);
imshow("Enhanced Image", image);
waitKey(0);
return 0;
}
```
首先,将原始图像转换为HSI图像(HSV也可以),然后对亮度通道进行直方图均衡化,最后将HSI图像转换回BGR格式。运行程序后,可以看到增强后的图像。