图像增强(直方图均衡化、拉普拉斯、Log、Gamma)
来源:互联网 发布:javascript长度函数 编辑:程序博客网 时间:2024/06/05 07:08
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp>#include<opencv2/opencv.hpp>#include <iostream>using namespace cv;//OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)void hisitogramEhance(Mat& image);//基于直方图均衡化的图像增强void laplaceEhance(Mat& image);//基于拉普拉斯算子的图像增强void logEhance(Mat& image);//基于对数Log变换的图像增强void gamaEhance(Mat& image); //基于伽马变换的图像增强int main(int argc, char *argv[]){Mat image = imread("1.jpg", 1);if (image.empty()){std::cout << "打开图片失败,请检查" << std::endl;return -1;}imshow("原图像", image);int key = 0;while (1){key = waitKey(9);//读取键值到key变量中switch (key){case 27:return 0; break;case 'q':hisitogramEhance(image); break;case 'w':laplaceEhance(image); break;case 'e':logEhance(image);break;case 'r':gamaEhance(image); break;}}waitKey();return 0;}void hisitogramEhance(Mat& image){Mat imageRGB[3];split(image, imageRGB);for (int i = 0; i < 3; i++){equalizeHist(imageRGB[i], imageRGB[i]);}merge(imageRGB, 3, image);imshow("直方图均衡化图像增强效果", image);}void laplaceEhance(Mat& image){Mat imageEnhance;Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, 0, 5, 0, 0, -1, 0);filter2D(image, imageEnhance, CV_8UC3, kernel);imshow("拉普拉斯算子图像增强效果", imageEnhance);}void logEhance(Mat& image){Mat imageLog(image.size(), CV_32FC3);for (int i = 0; i < image.rows; i++){for (int j = 0; j < image.cols; j++){imageLog.at<Vec3f>(i, j)[0] = log(1 + image.at<Vec3b>(i, j)[0]);imageLog.at<Vec3f>(i, j)[1] = log(1 + image.at<Vec3b>(i, j)[1]);imageLog.at<Vec3f>(i, j)[2] = log(1 + image.at<Vec3b>(i, j)[2]);}}//归一化到0~255 normalize(imageLog, imageLog, 0, 255, CV_MINMAX);//转换成8bit图像显示 convertScaleAbs(imageLog, imageLog);//imshow("Soure", image);imshow("Log变换图像增强效果", imageLog);}void gamaEhance(Mat& image){Mat imageGamma(image.size(), CV_32FC3);for (int i = 0; i < image.rows; i++){for (int j = 0; j < image.cols; j++){imageGamma.at<Vec3f>(i, j)[0] = (image.at<Vec3b>(i, j)[0])*(image.at<Vec3b>(i, j)[0])*(image.at<Vec3b>(i, j)[0]);imageGamma.at<Vec3f>(i, j)[1] = (image.at<Vec3b>(i, j)[1])*(image.at<Vec3b>(i, j)[1])*(image.at<Vec3b>(i, j)[1]);imageGamma.at<Vec3f>(i, j)[2] = (image.at<Vec3b>(i, j)[2])*(image.at<Vec3b>(i, j)[2])*(image.at<Vec3b>(i, j)[2]);}}//归一化到0~255 normalize(imageGamma, imageGamma, 0, 255, CV_MINMAX);//转换成8bit图像显示 convertScaleAbs(imageGamma, imageGamma);imshow("伽马变换图像增强效果", imageGamma);}
阅读全文
0 0
- 图像增强(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV 图像处理(直方图均衡化、拉普拉斯算子图像增强、Gamma校正)
- 图像增强-直方图均衡化
- 直方图均衡化,图像增强
- 灰度图像--图像增强 直方图均衡化(Histogram equalization)
- 图像增强方法之 直方图均衡化 (的原理)
- 图像指数、对数增强、直方图均衡化
- 图像增强之直方图均衡化
- [图像增强]二. 直方图均衡化
- 图像指数、对数增强、直方图均衡化
- 图像增强之直方图均衡化
- 直方图均衡化—图像增强
- 图像增强之(一)---直方图均衡化
- 图像增强之02直方图均衡化
- 【EMGUCV】图像的直方图均衡化增强
- HDU
- 移动开发----biu,biu,一个有趣的EditText
- Android源码-高质量开发库
- 【c语言】打开一个客户端socket描述符
- 包装类和正则表达式
- 图像增强(直方图均衡化、拉普拉斯、Log、Gamma)
- 控制开关的printf
- zoj1149 Dividing 动态规划
- RB_tree的插入
- HBase 源码中增加jmx数据收集
- 湃睿科技公开课圆满成功
- 迷迷糊糊很多年的js原型链
- 石子归并1-3 区间dp,四边形不等式优化,GarsiaWachs算法
- springboot与mybatis整合 实例详解(完美融合)