Skip to content

Commit 51a66bc

Browse files
committed
Add PS色彩均衡化算法.cpp
1 parent 46faa7f commit 51a66bc

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
Mat Equalizer(Mat src) {
2+
int row = src.rows;
3+
int col = src.cols;
4+
int Count[256] = { 0 };
5+
float p[256] = { 0 };
6+
float fSum[256] = { 0 };
7+
int level[256] = { 0 };
8+
int Total = row * col * 3;
9+
for (int i = 0; i < row; i++) {
10+
for (int j = 0; j < col; j++) {
11+
for (int k = 0; k < 3; k++) {
12+
Count[src.at<Vec3b>(i, j)[k]]++;
13+
}
14+
}
15+
}
16+
for (int i = 0; i < 256; i++) {
17+
p[i] = 1.0 * Count[i] / (1.0 * Total);
18+
if (i == 0)
19+
fSum[0] = p[0];
20+
else
21+
fSum[i] = fSum[i - 1] + p[i];
22+
level[i] = saturate_cast<uchar>(255 * fSum[i] + 0.5);
23+
}
24+
Mat dst(row, col, CV_8UC3);
25+
for (int i = 0; i < row; i++) {
26+
for (int j = 0; j < col; j++) {
27+
for (int k = 0; k < 3; k++) {
28+
dst.at<Vec3b>(i, j)[k] = level[src.at<Vec3b>(i, j)[k]];
29+
}
30+
}
31+
}
32+
return dst;
33+
}

PhotoShop Algorithm/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@
2626
- PSMinMax运算算法.cpp 实现了MinMax运算,对两张输入大小相同的图片进行逐像素运算合成目标图像。
2727
- PS算术乘法和除法.cpp 实现了对输入的两张图像进行乘法或除法的运算合成新图像。
2828
- PS算术加法和减法.cpp 实现了对输入的两张图像进行加法或减法的运算合成新图像。
29+
- PS色彩均衡化算法.cpp 实现了PS色彩均衡化算法,原理请看:https://blog.csdn.net/just_sort/article/details/94430129
2930

0 commit comments

Comments
 (0)