实现方法比较简单,主要实现方案就是先调亮度,再结合高斯模糊与双边模糊进行磨皮,最后进行图像增强(非锐化掩蔽方案 ——Unsharpening Mask)。
直接看代码以及注释:
void whiteFace(Mat& matSelfPhoto,int alpha, int beta)
{
for (int y = 0; y < matSelfPhoto.rows; y++)
{
for (int x = 0; x < matSelfPhoto.cols; x++)
{
for (int c = 0; c < 3; c++)
{
matSelfPhoto.at<Vec3b>(y, x)[c] = saturate_cast<uchar>(alpha*(matSelfPhoto.at<Vec3b>(y, x)[c]) + beta);
}
}
}
}
int main()
{
Mat matResult;
Mat src = imread("C:\\Users\\Administrator\\Desktop\\brightness\\test.jpg");
int bilateralFilterVal = 30; // 双边模糊系数
imshow("0000", src);
whiteFace(src, 1.1, 68); // 调整对比度与亮度,参数2为对比度,参数3为亮度
imshow("1111