用程序可以帮你改变图象
我是学数学的
用程序可以帮你改变图象
但是效果不是那么太理想
只能保证看到的不是马赛克了
function Heat_Equation( image_name,t,out_filename )
% image_name : 原图像文件名
% out_filename: 输出文件名
if nargin<3
disp('请按参数格式输入参数!!!');
return;
end
image_I=imread(image_name);
subplot(1,2,1);
imshow(image_I);
title('原图像');
mkdir('Heat_Eq'); % 新建文件夹以存放过程文件
cd('Heat_Eq');
[size_r,size_c]=size(image_I);
image_I=double(image_I);
if(t>0)
N=t/0.1;
else
N=(-t)/0.1% 每次叠代的步长为0.1
end
for index=1:N
image_ex=matrix_expand(image_I); % 边界拓展
diff_two_order=zeros(size_r,size_c);
for row=2:size_r+1
for col=2:size_c+1
diff_two_order(row-1,col-1)=-4*image_ex(row,col)+image_ex(row-1,col)+image_ex(row+1,col)+image_ex(row,col-1)+image_ex(row-1,col+1);
end
end
if(t>0)
image_I=image_I+0.1*diff_two_order;
else
image_I=image_I-0.1*diff_two_order;
end
imwrite( uint8(image_I),strcat('Heat_Eq_',num2str(index),'.bmp'));
end
cd('..')
subplot(1,2,2);
imshow(uint8(image_I));
if t>0
title('光滑后图像');
else
title('Gabor锐化后的图像');
end
imwrite( uint8(image_I),out_filename );
% -------------------------end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function matrix_ex=matrix_expand(matrix)
% 对矩阵进行延拓
[size_r,size_c]=size(matrix);
matrix_ex=zeros(size_r+2,size_c+2);
% 中
for row=1:size_r
for col=1:size_c
matrix_ex(row+1,col+1)=matrix(row,col);
end
end
% 左,右
for row=1:size_r
matrix_ex(row+1,1)=matrix(row,1);
matrix_ex(row+1,size_c+2)=matrix(row,size_c);
end
% 上,下
for col=1:size_c
matrix_ex(1,col+1)=matrix(1,col);
matrix_ex(size_r+2,col+1)=matrix(size_r,col);
end
matrix_ex(1,1)=matrix(1,1);
matrix_ex(1,size_c+2)=matrix(1,size_c);
matrix_ex(size_r+2,1)=matrix(size_r,1);
matrix_ex(size_r+2,size_c+2)=matrix(size_r,size_c);
% --------------------------