Skip to content

Commit 3c9b70d

Browse files
committed
Add Contrast Image Correction Method.cpp
1 parent 6dca7d6 commit 3c9b70d

File tree

2 files changed

+90
-9
lines changed

2 files changed

+90
-9
lines changed

Contrast Image Correction Method.cpp

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#include "opencv2/opencv.hpp"
2+
#include "iostream"
3+
#include "algorithm"
4+
#include "vector"
5+
#include "stdio.h"
6+
using namespace std;
7+
using namespace cv;
8+
9+
Mat ContrastImageCorrection(Mat src){
10+
int rows = src.rows;
11+
int cols = src.cols;
12+
Mat yuvImg;
13+
cvtColor(src, yuvImg, CV_BGR2YUV_I420);
14+
vector <Mat> mv;
15+
split(yuvImg, mv);
16+
Mat OldY = mv[0].clone();
17+
// for(int i = 0; i < rows; i++){
18+
// for(int j = 0; j < cols; j++){
19+
// mv[0].at<uchar>(i, j) = 255 - mv[0].at<uchar>(i, j);
20+
// }
21+
// }
22+
Mat temp;
23+
bilateralFilter(mv[0], temp, 9, 50, 50);
24+
//GaussianBlur(mv[0], temp, Size(41, 41), BORDER_DEFAULT);
25+
for(int i = 0; i < rows; i++){
26+
for(int j = 0; j < cols; j++){
27+
float Exp = pow(2, (128 - (255 - temp.at<uchar>(i, j))) / 128.0);
28+
int value = int(255 * pow(OldY.at<uchar>(i, j) / 255.0, Exp));
29+
temp.at<uchar>(i, j) = value;
30+
}
31+
}
32+
Mat dst(rows, cols, CV_8UC3);
33+
// mv[0] = temp;
34+
// merge(mv, dst);
35+
// cvtColor(dst, dst, CV_YUV2BGRA_I420);
36+
for(int i = 0; i < rows; i++){
37+
for(int j = 0; j < cols; j++) {
38+
if (OldY.at<uchar>(i, j) == 0) {
39+
for (int k = 0; k < 3; k++) dst.at<Vec3b>(i, j)[k] = 0;
40+
} else {
41+
//channel B
42+
dst.at<Vec3b>(i, j)[0] =
43+
(temp.at<uchar>(i, j) * (src.at<Vec3b>(i, j)[0] + OldY.at<uchar>(i, j)) / OldY.at<uchar>(i, j) +
44+
src.at<Vec3b>(i, j)[0] - OldY.at<uchar>(i, j)) >> 1;
45+
//channel G
46+
dst.at<Vec3b>(i, j)[1] =
47+
(temp.at<uchar>(i, j) * (src.at<Vec3b>(i, j)[1] + OldY.at<uchar>(i, j)) / OldY.at<uchar>(i, j) +
48+
src.at<Vec3b>(i, j)[1] - OldY.at<uchar>(i, j)) >> 1;
49+
//channel R
50+
dst.at<Vec3b>(i, j)[2] =
51+
(temp.at<uchar>(i, j) * (src.at<Vec3b>(i, j)[2] + OldY.at<uchar>(i, j)) / OldY.at<uchar>(i, j) +
52+
src.at<Vec3b>(i, j)[2] - OldY.at<uchar>(i, j)) >> 1;
53+
}
54+
}
55+
}
56+
// for(int i = 0; i < rows; i++){
57+
// for(int j = 0; j < cols; j++){
58+
// for(int k = 0; k < 3; k++){
59+
// if(dst.at<Vec3b>(i, j)[k] < 0){
60+
// dst.at<Vec3b>(i, j)[k] = 0;
61+
// }else if(dst.at<Vec3b>(i, j)[k] > 255){
62+
// dst.at<Vec3b>(i, j)[k] = 255;
63+
// }
64+
// }
65+
// }
66+
// }
67+
return dst;
68+
}
69+
70+
int main(){
71+
Mat src = imread("/home/streamax/CLionProjects/Paper/1.jpg");
72+
Rect rect(0, 0, (src.cols-1)/2*2, (src.rows-1)/2*2);
73+
Mat newsrc = src(rect);
74+
Mat dst = ContrastImageCorrection(newsrc);
75+
imshow("origin", newsrc);
76+
imshow("result", dst);
77+
cv::imwrite("../result.jpg", dst);
78+
waitKey(0);
79+
return 0;
80+
}

README.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
# 记录一些图像处理中的论文及代码复现
22

3-
- Retinex MSRCR.cpp 带色彩恢复的多尺度视网膜增强算法 学习链接:http://www.cnblogs.com/Imageshop/archive/2013/04/17/3026881.html
4-
- ImageDataIncrease.cpp 常见的图片数据扩充,包括一些PS算法 具体为旋转,添加高斯,椒盐噪声,增加老照片效果,增加和降低图像饱和度,对原图缩放,亮度增强,对比度增强,磨皮美白,偏色矫正,同态滤波,过曝,灰度化,轮换通道,图像错切,运动模糊,钝化蒙版,PS滤镜算法之球面化 (凸出和凹陷效果)
5-
- HDR.cpp 对《Adaptive Local Tone Mapping Based on Retinex for High Dynamic Range Images》C++朴素实现,无优化,详情请查看https://blog.csdn.net/just_sort/article/details/84030723
6-
- Adaptive Logarithmic Mapping For Displaying High Contrast Scenes.cpp 《Adaptive Logarithmic Mapping For Displaying High Contrast Scenes》c++朴素实现 ,详情请看:https://blog.csdn.net/just_sort/article/details/84066390
7-
- Single Image Haze Removal Using Dark Channel Prior.cpp 《Single Image Haze Removal Using Dark Channel Prior》论文阅读及复现,详情请看:https://blog.csdn.net/just_sort/article/details/84110518
8-
- Local Color Correction.cpp C++复现了《Local Color Correction》论文,详情请参考:https://blog.csdn.net/just_sort/article/details/84539295
9-
- PartialcolorJudge.cpp C++复现了《基于图像分析的偏色检测及颜色校正方法》论文,实现快速判断图片是否存在偏色,详情请看:https://blog.csdn.net/just_sort/article/details/84897976
10-
- Optimized contrast enhancement for real-time image and video dehazin.cpp 复现了《Optimized contrast enhancement for real-time image and video dehazin》这篇论文,相对于He Kaiming的暗通道去雾,对天空具有天然的免疫力。详情请看:https://blog.csdn.net/just_sort/article/details/84932848
11-
- AutoLevelAndAutoContrast.cpp C++复现了自动色阶调整和自动对比度调整,其中自动色阶调整可以用于去雾和水下图像恢复,算法原理请看:https://www.cnblogs.com/Imageshop/archive/2011/11/13/2247614.html
3+
- Retinex MSRCR.cpp 带色彩恢复的多尺度视网膜增强算法。 算法原理请看:http://www.cnblogs.com/Imageshop/archive/2013/04/17/3026881.html
4+
- ImageDataIncrease.cpp 常见的图片数据扩充。包括一些PS算法 具体为旋转,添加高斯,椒盐噪声,增加老照片效果,增加和降低图像饱和度,对原图缩放,亮度增强,对比度增强,磨皮美白,偏色矫正,同态滤波,过曝,灰度化,轮换通道,图像错切,运动模糊,钝化蒙版,PS滤镜算法之球面化 (凸出和凹陷效果)
5+
- HDR.cpp 对《Adaptive Local Tone Mapping Based on Retinex for High Dynamic Range Images》C++朴素实现,无优化。算法原理请看:https://blog.csdn.net/just_sort/article/details/84030723
6+
- Adaptive Logarithmic Mapping For Displaying High Contrast Scenes.cpp 《Adaptive Logarithmic Mapping For Displaying High Contrast Scenes》c++朴素实现 。算法原理请看:https://blog.csdn.net/just_sort/article/details/84066390
7+
- Single Image Haze Removal Using Dark Channel Prior.cpp 《Single Image Haze Removal Using Dark Channel Prior》论文阅读及复现。算法原理请看:https://blog.csdn.net/just_sort/article/details/84110518
8+
- Local Color Correction.cpp C++复现了《Local Color Correction》论文。算法原理请看:https://blog.csdn.net/just_sort/article/details/84539295
9+
- PartialcolorJudge.cpp C++复现了《基于图像分析的偏色检测及颜色校正方法》论文,实现快速判断图片是否存在偏色。算法原理请看:https://blog.csdn.net/just_sort/article/details/84897976
10+
- Optimized contrast enhancement for real-time image and video dehazin.cpp 复现了《Optimized contrast enhancement for real-time image and video dehazin》这篇论文,相对于He Kaiming的暗通道去雾,对天空具有天然的免疫力。算法原理请看:https://blog.csdn.net/just_sort/article/details/84932848
11+
- AutoLevelAndAutoContrast.cpp C++复现了自动色阶调整和自动对比度调整,其中自动色阶调整可以用于去雾和水下图像恢复。算法原理请看:https://www.cnblogs.com/Imageshop/archive/2011/11/13/2247614.html
12+
- Contrast Image Correction Method.cpp C++复现了《Contrast Image Correction Method》这篇论文,可以自适应矫正图像。算法原理请看:https://blog.csdn.net/just_sort/article/details/85005510
1213

1314
# ImageFiletering 复现了一些图像滤波算法
1415

0 commit comments

Comments
 (0)