思路一:对RGB三个矩阵分别进行处理
1. 建立磨皮函数,磨皮函数步骤如下:
(1)采用高斯滤波器,对图像处理十次,得到矩阵一
(2)采用canny算子,得到矩阵边缘的黑白图片得到矩阵二
(3)新矩阵 = 原矩阵*矩阵二+矩阵一*(1-矩阵二)
(4)输出新矩阵
磨皮函数代码如下
function [ finally_r ] = mopi( r )
[m,n] = size(r);
%采用高斯滤波器对矩阵处理20次,得到矩阵一
f = fspecial('gaussian');
r_f2 = r;
for i=1:20
r_f = imfilter(r_f2,f);
r_f2 = r_f;
end
%采用canny算子,得出图像的边缘,得到矩阵二
E_r = double(edge(r,'canny'));
% figure;imshow(E_r)
anti_E_r = 1 - E_r;
new_E_r = E_r.*r;
new_E_r2 = r_f.* anti_E_r;
finally_r = new_E_r + new_E_r2;
% figure;imshow(finally_r)
end
图像的canny算子得到的边缘如下所示
2.对RGB分别进行磨皮矩阵,并将其合并
代码如下:
I = imread('beauty.jpg');
r = im2double