FPGA ISP SmartBlur de-noising
This algorithm has certain edging image denoising, to implement low complexity in the FPGA, Matlab core code is given to the following:
%% 浮点仿真
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 implementation of the process, the idea is as follows:
- Control linebuffer N * N matrix to form a matrix
- Minus all the elements in the matrix central element, the absolute value
- Statistical absolute value is less than the threshold number of pixels, while the pixels accumulated
- Averaging
If the simulation feel the effects, come back to a praise! ! !