延展增加对比度
来源:互联网 发布:linux查看日志命令tail 编辑:程序博客网 时间:2024/04/30 02:32
/*延伸直方图均衡增加图像的对比度*/#include<opencv2\opencv.hpp>#include<iostream>using namespace cv;using namespace std;Mat stretch(const Mat& img, int minValue);Mat stretchV3(const Mat & img, int minValue);int main() {double t = getTickCount();Mat img = imread("D://图片//5.jpg");if (img.empty()) {cout << "加载失败" << endl;return -1;}int minVal = 0;cout << "请输入门槛值:" << endl;cin >> minVal;Mat result = stretch(img, minVal);Mat result2 = stretch(img, minVal);imshow("show_result", result);imshow("show_result2", result2);double Time = ((double)getTickCount() - t) / getTickFrequency();cout << "Time = " << Time << endl;waitKey(0);destroyAllWindows;return 0;}Mat stretch(const Mat & img, int minValue){Mat result;vector<Mat> channels;split(img, channels); //这里只处理一个通道,多通道类似int min = 0;int max = 255;for ( ; min <= 255; min++) {if (channels[0].at<uchar>(min) > minValue) break;}for ( ; max >= 0; max--) {if (channels[0].at<uchar>(max) > minValue)break;}int dim(256);Mat lookUp(1, &dim, CV_8UC1);for (int i = 0; i < 256; i++) {if (i < min)lookUp.at<uchar>(i) = 0;else if (i > max)lookUp.at<uchar>(i) = 255;else {lookUp.at<uchar>(i) = 255 * (i - min) / (max - min);}}LUT(channels[0], lookUp, result);return result;}Mat stretchV3(const Mat & img, int minValue) { //这里先转换成灰度图再执行全部的变换Mat result;Mat tem(img.size(), img.depth());cvtColor(img, tem, CV_BGR2GRAY);int min = 0;int max = 255;for (; min <= 255; min++) {if (tem.at<uchar>(min) > minValue)break;}for (; max >= 0; max--) {if (tem.at<uchar>(max) > minValue)break;}int dim(256);Mat lookUp(1, &dim, CV_8UC1);for (int i = 0; i < 256; i++) {if (i < min)lookUp.at<uchar>(i) = 0;else if (i > max)lookUp.at<uchar>(i) = 255;else {lookUp.at<uchar>(i) = 255 * (i - min) / (max - min);}}LUT(tem, lookUp, result);return result;}
效果图:
0 0
- 延展增加对比度
- 延展
- 延展
- 延展
- 对比度
- 对比度
- 增加PDF文件对比度的粗浅原理,及方法
- OpenCV图像增强——通过扩展灰度范围来增加对比度
- IOS延展
- 延展、协议
- 类目 延展
- 延展@interface
- OC-延展
- Swift_延展
- OpenCV 2 学习笔记(16): 利用查找表(Look-up table)改善图片质量,增加图像对比度
- 对比度拉伸
- 类目,延展,协议
- iOS 类目,延展,协议
- hibernate注解(二)
- React.js生态系统概览
- TabLayout.setOnTabSelectedListener不切换fragment
- 修改状态栏样式
- bzoj 2301: [HAOI2011]Problem b
- 延展增加对比度
- Java核心技术读书笔记——第1章 第2章
- Java fork join ForkJoinPool 用法例子
- Fxxk CrackMe 001(未完成 2016/05/02)
- 自己写的仿QQ空间导航栏
- Spark性能优化:JVM参数调优
- Android自定义View——开关按钮SwitchButton
- 一道简单题
- Apache Maven项目提供的JAR插件详解