原理:提取图像的高频分量,再用一个参数放大之后与原图叠加,这样就产生了一个增强了边缘的图像。
提取图像的高频分量的做法有两种:1.直接使用高通滤波器,得到高频分量。2.通过低通滤波器,再用原图减去低频就得到了高频信息。
直接提取高频的方法有sobel算法、laplcian算子,sobel算子是图像的一阶导数,提取的是梯度信息,分水平和垂直两种,常常用来做边缘检测、方向判别,sobel算子在斜坡处不为0,因此会产生较粗的边缘。laplcian算子是图像的二阶导,在图像开始变化和结束变化的地方值不为0,渐变时结果为0,因此laplacian比sobel算子更适合做sharpen。
除了直接提取高频的方法外,我们也可以先提取低频,原图减去低频得到高频。这种方法称为非锐化掩模(unsharpen mask),我们常使用低通滤波器(高斯、双边)对图像进行滤波,这种方法滤波器很好控制(包括大小和强弱),从而可以控制高频分量的强弱。
clear;close all;clc;
GaussKernel=fspecial('gaussian',5,3); %高斯滤波器
ImgIn=imread('C:\Users\Acer\Desktop\file\mp\2.png');
ImgIn=rgb2gray(ImgIn);
ImgBlur=imfilter(ImgIn,GaussKernel); %原图做低通滤波,得到低频分量
UnsharpMask=ImgIn-ImgBlur; %原图-低频 得到高频分量
ImgUnsharp