matlab练习程序(图像马赛克)

时间:2022-03-01 06:46:35

处理原理就是将邻域像素平均值赋给邻域中的所有像素。

这里将处理方法分为了带线条和不带线条,带线条处理后的视觉效果要好些。

原图:

matlab练习程序(图像马赛克)

处理结果(不带线条):

matlab练习程序(图像马赛克)

处理结果(带线条):

matlab练习程序(图像马赛克)

代码处理的是带线条的情况。

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,[])

如果存在恢复马赛克的算法一定能超神...