处理原理就是将邻域像素平均值赋给邻域中的所有像素。
这里将处理方法分为了带线条和不带线条,带线条处理后的视觉效果要好些。
原图:
处理结果(不带线条):
处理结果(带线条):
代码处理的是带线条的情况。
matlab代码如下:
clear all; close all;clc; img=imread('lena.jpg');
imshow(img,[]); [h w]=size(img);
imgn=zeros(h,w); n=;
nw=floor(w/n)*n;
nh=floor(h/n)*n; for y=:n:nh
for x=:n:nw
imgn(y:y+n-,x:x+n-)=mean(mean(img(y:y+n-,x:x+n-)));
end imgn(y:y+n-,nw+:w)=mean(mean(img(y:y+n-,nw+:w))); %处理最后一列
imgn(y,:w)=;
end for x=:n:nw
imgn(nh+:h,x:x+n-)=mean(mean(img(nh+:h,x:x+n-))); %处理最后一行
imgn(:h,x)=;
end imgn(nh+:h,nw+:w)=mean(mean(img(nh+:h,nw+:w))); %处理最后一个角 imgn(:h,nw)=;
imgn(:h,w)=; imgn(nh,:w)=;
imgn(h,:w)=; figure;imshow(imgn,[])
如果存在恢复马赛克的算法一定能超神...