www.pudn.com > fractional-differential.rar > Enhance_contrast.m, change:2013-09-09,size:2123b


%%%图像增强实验&&分数阶微分,不同阶数对比 
close all 
% clear all 
I = imread('..\image\baboon.jpg'); %fabric.png;coins.png;moon.tif 
imshow(I); 
title('原图像'); 
I = im2double(I(:,:,1));  
 
v = 0.3;    % v代表分数阶微分的阶数 
a0 = 1; 
a1 = -v; 
a2 = (-v)*(-v+1)/2; 
a3 = (-v)*(-v+1)*(-v+2)/6; 
a4 = (-v)*(-v+1)*(-v+2)*(-v+3)/24; 
F1 = [a1 a1 a1 ;a1 8*a0 a1 ;a1 a1 a1];   % 3*3分数阶掩膜算子 
F2 = [a2 0 a2 0 a2 ;0 a1 a1 a1 0 ;a2 a1 8*a0 a1 a2 ;... 
    0 a1 a1 a1 0 ;a2 0 a2 0 a2];        % 5*5分数阶掩膜算子 
F3 = [a3 0 0 a3 0 0 a3 ;0 a2 0 a2 0 a2 0 ;0 0 a1 a1 a1 0 0 ;a3 a2 a1 8*a0 a1 a2 a3;... 
    0 0 a1 a1 a1 0 0 ;0 a2 0 a2 0 a2 0 ;a3 0 0 a3 0 0 a3];   % 7*7分数阶掩膜算子 
G_frac_1 =imfilter(I ,F2 ,'replicate');  
figure,imshow(G_frac_1,[]); 
title(['5*5分数阶掩膜算子',' 阶数',num2str(v),'阶']); 
clear v a1 a2 a3 F1 F2 F3 
 
v = 0.5;    % v代表分数阶微分的阶数 
a0 = 1; 
a1 = -v; 
a2 = (-v)*(-v+1)/2; 
a3 = (-v)*(-v+1)*(-v+2)/6; 
% a4 = (-v)*(-v+1)*(-v+2)*(-v+3)/24; 
F1 = [a1 a1 a1 ;a1 8*a0 a1 ;a1 a1 a1];   % 3*3分数阶掩膜算子 
F2 = [a2 0 a2 0 a2 ;0 a1 a1 a1 0 ;a2 a1 8*a0 a1 a2 ;... 
    0 a1 a1 a1 0 ;a2 0 a2 0 a2]./(8-12*v+4*v*v);        % 5*5分数阶掩膜算子 
F3 = [a3 0 0 a3 0 0 a3 ;0 a2 0 a2 0 a2 0 ;0 0 a1 a1 a1 0 0 ;a3 a2 a1 8*a0 a1 a2 a3;... 
    0 0 a1 a1 a1 0 0 ;0 a2 0 a2 0 a2 0 ;a3 0 0 a3 0 0 a3];   % 7*7分数阶掩膜算子 
G_frac_1 =imfilter(I ,F2 ,'replicate');  
figure,imshow(G_frac_1,[]); 
title(['5*5分数阶掩膜算子',' 阶数',num2str(v),'阶']); 
clear v a1 a2 a3 F1 F2 F3 
 
v = 0.8;    % v代表分数阶微分的阶数 
a0 = 1; 
a1 = -v; 
a2 = (-v)*(-v+1)/2; 
a3 = (-v)*(-v+1)*(-v+2)/6; 
a4 = (-v)*(-v+1)*(-v+2)*(-v+3)/24; 
F1 = [a1 a1 a1 ;a1 8*a0 a1 ;a1 a1 a1];   % 3*3分数阶掩膜算子 
F2 = [a2 0 a2 0 a2 ;0 a1 a1 a1 0 ;a2 a1 8*a0 a1 a2 ;... 
    0 a1 a1 a1 0 ;a2 0 a2 0 a2];        % 5*5分数阶掩膜算子 
F3 = [a3 0 0 a3 0 0 a3 ;0 a2 0 a2 0 a2 0 ;0 0 a1 a1 a1 0 0 ;a3 a2 a1 8*a0 a1 a2 a3;... 
    0 0 a1 a1 a1 0 0 ;0 a2 0 a2 0 a2 0 ;a3 0 0 a3 0 0 a3]./(8-12*v+4*v*v);   % 7*7分数阶掩膜算子 
G_frac_1 =imfilter(I ,F2);  
figure,imshow(G_frac_1,[]); 
title(['5*5分数阶掩膜算子',' 阶数',num2str(v),'阶']);