fspecial('laplacian', 0.2) %默认值
clc;%清空命令窗口的内容
clear;%清空所有使用的资源
close all;%关闭所有文件
figure;%开启一个展示的程序框
img = imread('C:\Users\DELL\Pictures\Camera Roll\test2.jpg');%通过绝对路径获取到图片
subplot(131); %设置图片的位置
imshow(img); %展示图片
title('展示原图效果');%设置展示图片的标题
filter = fspecial('laplacian',0.2);%获得一个数值为0.2类型的laplacian的filter
mid = imfilter(img, filter, 'replicate'); %通过filter进行处理
subplot(132); %设置laplacian处理过的图片的位置
imshow(mid);%展示这张图片
title('拉普拉斯filter后的结果');%所展示图片的内容
endd = img + mid;%得到锐化的结果
subplot(133);%设置结果的展示位置
imshow(endd);%展示最终的效果图
title('锐化后的结果');%设置结果的图片的名字
clc;%清除命令行窗口指令
clear;%关闭占用的资源
close all; %关闭所有文件
I = imread('test.jpg');%读取测试用的图片数据
I = rgb2gray(I);%将原图转换为灰度图
I = imresize ( I ,[400,200]);%将原图设置为合理的尺寸
pic_name1 = 'Gauss';%gause金子塔每层的标识符
pic_name2 = 'Laplacian';%laplacian金字塔每层的标识符
s = 0.5; %缩小的倍数
start = 10; %设置图片的防止位置
layout = [];%存储布局信息的数组
%计算高斯金字塔并展示
for i = 0:3
h = subplot(4, 3, start - i * 3);%设置布局
imshow(I); %展示当前层的图片
title([ pic_name1, num2str(i)]);%打印提示信息
%存储处理过的图片
imwrite(I, [ pic_name1, num2str(i), '.jpg']);
layout = [layout, h];%将当前的图片的布局添加到数组中
[r,c] = size(I);%获取这张图片的原始尺寸
w = fspecial( 'gaussian' );%获得gaussian的fiter
I = imresize( imfilter(I,w),[r*s ,c*s] );%利用filter处理图片
end
%计算拉普拉斯金字塔
for i = 1:3
%获取同层gauss金子塔的图片
G = imread([ pic_name1 , num2str(i), '.jpg']);
B = imresize(G, 2);%将当前层的尺寸拓展到与上一层的尺寸相同
h = subplot(4, 3, start + 1 - (i - 1) *3);%设置布局
imshow(B);%展示图片
%读取上一层gause金子塔的图片
G2 = imread([pic_name1, num2str(i - 1), '.jpg']);
L = G2 - B;%通过相减得到当前层的laplacian金字塔的图片
h2 = subplot(4, 3, start + 2 - (i - 1) * 3); %设置布局
imshow(L);%真是图片
title([ pic_name2, num2str(i - 1)]);%打印提示信息
imwrite(L, [ pic_name2, num2str(i - 1), '.jpg']);%村粗图片
layout = [layout, h, h2];%设置布局
end
%同上
L3 = imread('Gauss3.jpg');
h = subplot(4, 3, 3);
imshow(L3);
imwrite(L3,'Laplacian3.jpg');
title('Laplacian3');
layout = [layout, h];
linkaxes(layout);%展示最终的效果
效果如下:
可能图片较小效果不明显。所以将Laplacian图片放大效果如下:
clc;
clear;
close all;
layout = []; %存放布局的数组
start = 7;
for i = 0:3
gauss = imread(['Gauss', num2str(i), '.jpg']);%获得gauss金字塔本层的图片
laplacian = imread(['Laplacian', num2str(i), '.jpg']);%获得laplacian金字塔本层的图片
sharp = gauss + laplacian;%获得锐化后的效果图
%打印效果图信息
imwrite( sharp, ['sharp', num2str(i), '.jpg']);
loc1 = subplot(4, 2, start + 0);
imshow(gauss);
title1 = 'gauss';
title1 = [title1,num2str(i)];
title ( title1 );
loc2 = subplot(4, 2, start + 1);
imshow(sharp);
title2 = 'sharp';
tilte2 = [title2,num2str(i)];
title( title2 );
start = start - 2;
layout = [layout, loc1, loc2];
end
锐化可以提高图片的清晰度,强化边缘,方便处理模糊的图片