Laplace 算子和 Sobel 算子一样,属于空间锐化滤波操作。
拉普拉斯算子是一种重要的图像增强算子,它是一种各向同性滤波器,即滤波器的响应与滤波器作用图像的突变方向无关,而且实现简单,被广泛用于图像锐化和高频增强等算法中。 分别对Laplace算子x,y两个方向的二阶导数进行差分就得到了离散函数的Laplace算子。
在一个二维函数 f(x,y) 中,x,y 两个方向的二阶差分分别为,
所以Laplace算子的差分形式为,
0 | 1 | 0 |
---|---|---|
1 | -4 | 1 |
0 | 1 | 0 |
如同本文开始时说的那样,将 Laplace 算子写成 filter mask 后,其操作大同小异于其他的空间滤波操作。将 filter mask 在原图上逐行移动,然后mask中数值与其重合的像素相乘后求和,赋给与 mask 中心重合的像素,对图像的第一,和最后的行和列无法做上述操作的像素赋值零,就得到了拉普拉斯操作结果。
下面给出了关键代码实现
//pixel add calculate
always @ (posedge clk) begin
if(pixel_en_d3)begin
data_sum <=(A11+ A12 + A13 +A21+A23+A31+A32+A33) ;
end
add_en<=pixel_en_d3;
end
always @ (posedge clk) begin
if(add_en)begin
if(data_sum[0+:(PIXELS_BITS+3)]>{A22[0+:(PIXELS_BITS)],3'b0})
o_data<=data_sum[0+:(PIXELS_BITS+3)]-{A22[0+:(PIXELS_BITS)],3'b0};
else
o_data<={A22[0+:(PIXELS_BITS)],3'b0}-data_sum[0+:(PIXELS_BITS+3)];
end
valid <= add_en;
end
详细工程可以后台回复【Laplace 算子】即可获得,如何在工程中添加,可以参考小编写的《视频处理之Sobel【附源码】
》
https://blog.csdn.net/hellocsz/article/details/102485387
https://blog.csdn.net/Loney_Island/article/details/80966909