matlab练习程序(油画效果)
油画效果算法有两个参数,一个是滤波半径r,一个是量化位数q。 算法原理: 1. 首先根据量化位数将0-255划分为q个区间; 2. 然后根据滤波半径r拿到半径内的像素; 3. 统计像素在区间中出现的次数,找到次数最大的区间; 4. 计算次数最大区间所有像素平均值赋值给当前滤波像素即可。 matlab代码如下: clear all; close all; clc; r = 1 ; % 滤波半径 q = 8 ; % 量化位数 img =imread( ' lena.jpg ' ); [m,n] = size(img); imshow(img) imgn =zeros(m+ 2 *r+ 1 ,n+ 2 *r+ 1 ); imgn(r + 1 :m+r,r+ 1 :n+r)= img; imgn( 1 :r,r+ 1 :n+r)=flipud(img( 1 :r, 1 :n)); % 扩展上边界 imgn( 1 :m+r,n+r+ 1 :n+ 2 *r+ 1 )=fliplr(imgn( 1 :m+r,n:n+r)); % 扩展右边界 imgn(m +r+ 1 :m+ 2 *r+ 1 ,r+ 1 :n+ 2 *r+ 1 )=flipud(imgn(m:m+r,r+ 1 :n+ 2 *r+ 1 )); % 扩展下边界 imgn( 1 :m+ 2 *r+ 1 , 1 :r)=fliplr