本文转载自:搞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矩阵
矩阵内所有元素减去中心元素,求绝对值
统计绝对值小于门限的像素个数,同时将这些像素累加
求均值
如果仿真觉得对效果,回来给个赞!!!