matlab練習程式(碎片)

Dsp Tian發表於2016-01-03

這個演算法是對photoshop中濾鏡->畫素化->碎片這個功能的學習。

PS這個功能好像不帶引數,不過我這裡有濾波半徑r可以進行控制。

因為我是看效果猜演算法的,效果肯定有所區別。

我的想法是對影象以r為長度,在上下左右四個方向做位移,然後進行混合。

程式碼還是很簡單,就不詳細介紹了。

處理效果如下:

原圖:

處理後效果:

PS碎片效果:

matlab程式碼如下:

clear all;close all;clc

img=double(imread('lena.jpg'));
[h w]=size(img);
imshow(img,[])

r=10;   %位移距離

%向上下左右四個方向移位,然後再混合
%ps也許是對左上、右上、左下、右下四個角的方向做的位移 left
=zeros(h+2*r,w+2*r); right=zeros(h+2*r,w+2*r); top=zeros(h+2*r,w+2*r); bottom=zeros(h+2*r,w+2*r);
%這裡做了一個影象放大的處理,防止最後影象邊緣產生突變 left(r
+1:h+r,1:w+r)=imresize(img,[h,w+r]); right(r+1:h+r,r+1:w+2*r)=imresize(img,[h,w+r]); top(1:h+r,r+1:w+r)=imresize(img,[h+r,w]); bottom(r+1:h+2*r,r+1:w+r)=imresize(img,[h+r,w]); imgn=0.25*(left+right+top+bottom); imgn=imgn(r+1:h+r,r+1:w+r); figure;imshow(imgn,[])

 

相關文章