matlab实现人脸祛斑

人脸祛斑

#编程实现人脸祛斑

本菜鸡刚学了数字图像处理课程,老师安排作业编写程序(任选语言),实现人脸的祛斑功能,思来想去决定选择高大上的matlab(因为有现成函数可直接调用哈哈)。

因为是菜鸡,所以思路也很简单。先把待处理图片读入,因为是处理斑点,只有那么一小块,待处理图如下:matlab实现人脸祛斑_第1张图片所以我想的是可以先把图片分成一小块一小块(即马赛克化),这时候再利用拉普拉斯高斯算子边缘提取,因为脸上的斑点和其他区域肯定有差别,边缘肯定能提取出,这是提取出的图片如下,matlab实现人脸祛斑_第2张图片
再把它与原来图片相加,就可以稍微减少一些斑点,再经过均值滤波对图像加强可以达到少量祛斑的效果。matlab实现人脸祛斑_第3张图片

全部的matlab代码如下:

f=imread('2.jfif');
subplot(1,2,1);imshow(f);
[h w] = size(f);
p=f;
n=2;
a=mod(h,n);
b=mod(w,n);
 for i=1:n:h-a
     for j=1:n:w-b
         p(i:i+n-1,j:j+n-1)=mean(mean(f(i:i+n-1,j:j+n-1)));%将图像马赛克
     end
 end  
h=fspecial('log');
i=imfilter(p, h);%拉普拉斯高斯算子边缘提取后的图片
p1=i+f;%原图像加上边缘提取后的图片
h=fspecial('average',3);
p2=imfilter(p1, h);%再将图片经过均值滤波加强
subplot(1,2,2);imshow(p2);

一些处理结果图对比:
matlab实现人脸祛斑_第4张图片
matlab实现人脸祛斑_第5张图片以前很少编程,所以编程习惯也不好,大家看看就行,也请大家多多指教,希望以后能一起共勉,向前进步。

你可能感兴趣的:(matlab实现人脸祛斑)