FPGA ISP SmartBlur去噪

本文转载自:搞FPGA开发的Tony老师

这个算法对图像有一定的包边去噪效果,在FPGA上实现起来复杂度较低,下面先给出Matlab核心代码:

%% 浮点仿真

cent_x = ceil(Rad/2);
cent_y = ceil(Rad/2);
roi = zeros(Rad, Rad);
SimCnt = 0;
img_out = img_in;
for ch = 1:1:d
    for rows = 1:1:m-Rad
        for cols = 1:1:n-Rad
            SimCnt = 0;
            SimAcc = 0;
            roi = img_in(rows:rows+Rad-1,cols:cols+Rad-1, ch);
           %% 相似点匹配
            for ii=1:1:Rad
               for jj=1:1:Rad
                    if abs(roi(ii, jj)- roi(cent_x,cent_y)) < Th
                        SimCnt = SimCnt + 1;
                        SimAcc = SimAcc + roi(ii, jj);
                    else
                        SimCnt = SimCnt;
                        SimAcc = SimAcc;
                    end  
               end
            end
            %% 均衡
            img_out(rows, cols, ch) = SimAcc/SimCnt;
        end
    end
end

在FPGA实现的过程中,其思路如下:

  • 控制linebuffer形成矩阵N*N矩阵

  • 矩阵内所有元素减去中心元素,求绝对值

  • 统计绝对值小于门限的像素个数,同时将这些像素累加

  • 求均值

如果仿真觉得对效果,回来给个赞!!!