美颜算法--数字图像处理作业

1. 简答题

请为图中人做美肌处理,去痘或去皱纹。(2选1,或自选图片)

作业内容请包含所用的算法说明,效果图,主要算法的代码,以及对效果图的分析。所有内容用图片或文字的形式提交,不要用附件。

美颜算法--数字图像处理作业_第1张图片

2. 答案


2.1 分析问题
        图一可见大量痘点,痘点在途中属于噪声,考虑首先采用卷积核大小为9的中值滤波器减小声,滤波会导致细节减少以及亮度下降,考虑滤波后与原图相加恢复一定的细节,再对图像进行锐化、对比度增强,经锐化后的图像发丝细节仍然损失很多,考虑到发丝垂直分布,采用sobel算子提取原图中竖直方向的细节后与上述step3得到的图像相加得到最终图像。

2.2 具体步骤及代码

step1. 采用中指滤波器进行平滑滤波去噪,减弱图一的痘痘(噪声),选定kernelsize=9

美颜算法--数字图像处理作业_第2张图片

step2. 上述步骤所得图像与原图按照0.2:0.8的权重相加,恢复一部分细节

美颜算法--数字图像处理作业_第3张图片 融合后 美颜算法--数字图像处理作业_第4张图片 *0.2权重 美颜算法--数字图像处理作业_第5张图片 *0.8权重

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

美颜算法--数字图像处理作业_第6张图片 增强后

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

美颜算法--数字图像处理作业_第7张图片 sobel算子提取的图像

step5. 将上述两步所得图像进行叠加,得到最终图像

美颜算法--数字图像处理作业_第8张图片美颜算法--数字图像处理作业_第9张图片美颜算法--数字图像处理作业_第10张图片

 结果 = “sobel” + “enhanced”

2.3 代码

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 最终对比

美颜算法--数字图像处理作业_第11张图片 原图
美颜算法--数字图像处理作业_第12张图片 结果

你可能感兴趣的:(数字图像处理,算法,计算机视觉,深度学习,opencv,图像处理)