matlab練習程式(影象馬賽克)

Dsp Tian發表於2014-10-06

處理原理就是將鄰域畫素平均值賦給鄰域中的所有畫素。

這裡將處理方法分為了帶線條和不帶線條,帶線條處理後的視覺效果要好些。

原圖:

處理結果(不帶線條):

處理結果(帶線條):

程式碼處理的是帶線條的情況。

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

如果存在恢復馬賽克的演算法一定能超神...

相關文章