图像处理(二)laplacian锐化

图像处理第二次作业


实验材料


  • 原图:
    图像处理(二)laplacian锐化_第1张图片
    图像处理(二)laplacian锐化_第2张图片
  • laplacian的filter的类型
fspecial('laplacian', 0.2) %默认值
  • 系数:
    默认值0.2
  • 拉普拉斯-高斯金字塔的层数:
    4

实验一: 33 的laplacian filter锐化原图


  • 代码如下:
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('锐化后的结果');%设置结果的图片的名字
  • 效果如下:
    图像处理(二)laplacian锐化_第3张图片

实验二:获得Gauss金字塔和Laplacian金字塔


  • 代码如下:
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锐化_第4张图片
可能图片较小效果不明显。所以将Laplacian图片放大效果如下:
图像处理(二)laplacian锐化_第5张图片


实验三:获得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 
  • 效果如下:
    图像处理(二)laplacian锐化_第6张图片
    右侧的图可能因为放大发生了变形原图如下
    图像处理(二)laplacian锐化_第7张图片

结论


锐化可以提高图片的清晰度,强化边缘,方便处理模糊的图片

你可能感兴趣的:(图像处理)