拉普拉斯锐化
根据某个像素周围像素到此像素的突变程度进行锐化。
一阶微分: 梯度,图像变化方向,增长或降低
二阶微分: 变化速度,过渡比较急剧还是减缓
对laplace锐化而言
当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。
进而让其图像灰度差异更大。
微分算子
一阶
∂ f ∂ x = f ( x , y ) − f ( x − 1 , y ) \frac{\partial f}{\partial x} = f(x,y)-f(x-1,y) ∂x∂f=f(x,y)−f(x−1,y)
∂ f ∂ y = f ( x , y ) − f ( x , y − 1 ) \frac{\partial f}{\partial y} = f(x,y)-f(x,y-1) ∂y∂f=f(x,y)−f(x,y−1)
全微分有
Δ f = ∂ f ∂ x + ∂ f ∂ y = 2 f ( x , y ) − f ( x − 1 , y ) − f ( x , y − 1 ) \Delta f = \frac{\partial f}{\partial x}+\frac{\partial f}{\partial y} =2f(x,y) - f(x-1,y) - f(x,y-1) Δf=∂x∂f+∂y∂f=2f(x,y)−f(x−1,y)−f(x,y−1)
二阶
∇ 2 f = 4 f ( x , y ) − f ( x − 1 , y ) − f ( x , y + 1 ) − f ( x + 1 , y ) − f ( x , y − 1 ) \nabla^2 f = 4f(x,y) - f(x-1,y) - f(x,y+1) - f(x+1,y) -f(x,y-1) ∇2f=4f(x,y)−f(x−1,y)−f(x,y+1)−f(x+1,y)−f(x,y−1)
有四邻域模板矩阵
[ 0 − 1 0 − 1 4 − 1 0 − 1 0 ] \begin{bmatrix} 0&-1&0\\-1&4&-1\\0&-1&0 \end{bmatrix} ⎣⎡0−10−14−10−10⎦⎤
如果进行中心差分格式,有
∇ 2 f = 8 f ( x , y ) − f ( x − 1 , y − 1 ) − f ( x − 1 , y ) − f ( x − 1 , y + 1 ) − f ( x , y − 1 ) − f ( x , y + 1 ) − f ( x + 1 , y − 1 ) − f ( x + 1 , y ) − f ( x + , y + 1 ) \nabla^2 f = 8f(x,y) - f(x-1,y-1) - f(x-1,y) - f(x-1,y+1) - f(x,y-1) - f(x,y+1) - f(x+1,y-1) - f(x+1,y) -f(x+,y+1) ∇2f=8f(x,y)−f(x−1,y−1)−f(x−1,y)−f(x−1,y+1)−f(x,y−1)−f(x,y+1)−f(x+1,y−1)−f(x+1,y)−f(x+,y+1)
八邻域模板矩阵
[
−
1
−
1
−
1
−
1
8
−
1
−
1
−
1
−
1
]
\begin{bmatrix} -1&-1&-1\\-1&8&-1\\-1&-1&-1 \end{bmatrix}
⎣⎡−1−1−1−18−1−1−1−1⎦⎤
锐化方式
按下式子、替换原像素处的数值
g ( x ) = { f ( x , y ) − ∇ 2 f ( x , y ) , ∇ 2 f ( x , y ) < 0 f ( x , y ) + ∇ 2 f ( x , y ) , ∇ 2 f ( x , y ) ≥ 0 g(x) = \begin{cases} f(x,y) - \nabla^2 f(x,y),&\nabla^2 f(x,y)<0\\ f(x,y) + \nabla^2 f(x,y),&\nabla^2f(x,y) \ge 0 \end{cases} g(x)={f(x,y)−∇2f(x,y),f(x,y)+∇2f(x,y),∇2f(x,y)<0∇2f(x,y)≥0
代码
function [ImageOut] = MyLaplace(I)
[m,n,c]=size(I);
A=zeros(m,n,c);
%分别处理R、G、B
%先对R进行处理
for i=2:m-1
for j=2:n-1
A(i,j,1)=I(i+1,j,1)+I(i-1,j,1)+I(i,j+1,1)+I(i,j-1,1)-4*I(i,j,1);
end
end
%再对G进行处理
for i=2:m-1
for j=2:n-1
A(i,j,2)=I(i+1,j,2)+I(i-1,j,2)+I(i,j+1,2)+I(i,j-1,2)-4*I(i,j,2);
end
end
%最后对B进行处理
for i=2:m-1
for j=2:n-1
A(i,j,3)=I(i+1,j,3)+I(i-1,j,3)+I(i,j+1,3)+I(i,j-1,3)-4*I(i,j,3);
end
end
ImageOut=I-ceil(A);
end