1. 简答题
请为图中人做美肌处理,去痘或去皱纹。(2选1,或自选图片)
作业内容请包含所用的算法说明,效果图,主要算法的代码,以及对效果图的分析。所有内容用图片或文字的形式提交,不要用附件。
2. 答案
2.1 分析问题
图一可见大量痘点,痘点在途中属于噪声,考虑首先采用卷积核大小为9的中值滤波器减小声,滤波会导致细节减少以及亮度下降,考虑滤波后与原图相加恢复一定的细节,再对图像进行锐化、对比度增强,经锐化后的图像发丝细节仍然损失很多,考虑到发丝垂直分布,采用sobel算子提取原图中竖直方向的细节后与上述step3得到的图像相加得到最终图像。
2.2 具体步骤及代码
step1. 采用中指滤波器进行平滑滤波去噪,减弱图一的痘痘(噪声),选定kernelsize=9
step2. 上述步骤所得图像与原图按照0.2:0.8的权重相加,恢复一部分细节



step3. 对上述步骤所得图像进行锐化以及对比度增强

step4. 使用sobel算子的滤波器提取垂直方向的细节(主要是发丝),选定kernelsize=3,scale=0.5,再进行重新整定

step5. 将上述两步所得图像进行叠加,得到最终图像
结果 = “sobel” + “enhanced”
2.3 代码文章来源:https://www.toymoban.com/news/detail-772473.html
import cv2
from PIL import Image
from PIL import ImageEnhance
import numpy as np
def facial_dermabrasion_effect(fileName):
img = cv2.imread(fileName)
#中值滤波,kersize=9
blur_img = cv2.medianBlur(img, 9)
#按权重叠加图像,原图0.2,去噪后图像0.8
result_img = cv2.addWeighted(img, 0.2, blur_img, 0.8, 0)
cv2.imwrite("fusionimg.jpg", result_img)
image = Image.open("fusionimg.jpg")
# 锐化
enh_img = ImageEnhance.Sharpness(image)
image_sharped = enh_img.enhance(2.0)
# 对比度增强
con_img = ImageEnhance.Contrast(image_sharped)
image_con = con_img.enhance(1.15)
#sobel算子的滤波器提取垂直方向细节,kernelsize=3,scale=0.5
image_con = np.asarray(image_con)
img_sobelxy = cv2.Sobel(image_con, cv2.CV_64F, 1, 0,0.5, 3, 0)
img_sobelxy = cv2.convertScaleAbs(img_sobelxy)
image_con = np.asarray(image_con)
image_con = cv2.addWeighted(img_sobelxy,1,image_con,1,0)
cv2.imwrite("resultimg.jpg", image_con)
image_con = Image.open("resultimg.jpg")
image_con.save("resultimg.jpg")
img1 = cv2.imread("1.jpg")
img2 = cv2.imread("resultimg.jpg")
cv2.imshow("Origin", img1)
cv2.imshow("After", img2)
cv2.waitKey()
cv2.destroyAllWindows()
if __name__ == "__main__":
facial_dermabrasion_effect('1.jpg')
2.4 最终对比文章来源地址https://www.toymoban.com/news/detail-772473.html


到了这里,关于美颜算法--数字图像处理作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!