處理原理就是將鄰域畫素平均值賦給鄰域中的所有畫素。
這裡將處理方法分為了帶線條和不帶線條,帶線條處理後的視覺效果要好些。
原圖:
處理結果(不帶線條):
處理結果(帶線條):
程式碼處理的是帶線條的情況。
matlab程式碼如下:
clear all; close all;clc; img=imread('lena.jpg'); imshow(img,[]); [h w]=size(img); imgn=zeros(h,w); n=12; nw=floor(w/n)*n; nh=floor(h/n)*n; for y=1:n:nh for x=1:n:nw imgn(y:y+n-1,x:x+n-1)=mean(mean(img(y:y+n-1,x:x+n-1))); end imgn(y:y+n-1,nw+1:w)=mean(mean(img(y:y+n-1,nw+1:w))); %處理最後一列 imgn(y,1:w)=128; end for x=1:n:nw imgn(nh+1:h,x:x+n-1)=mean(mean(img(nh+1:h,x:x+n-1))); %處理最後一行 imgn(1:h,x)=128; end imgn(nh+1:h,nw+1:w)=mean(mean(img(nh+1:h,nw+1:w))); %處理最後一個角 imgn(1:h,nw)=128; imgn(1:h,w)=128; imgn(nh,1:w)=128; imgn(h,1:w)=128; figure;imshow(imgn,[])
如果存在恢復馬賽克的演算法一定能超神...