TIDUE95A April 2018 – April 2020
Arc Removal: Arc removal requires knowing what the average noise floor is for each range row of the heatmap. This data is collected automatically by the demo software when "rowNoise" CLI commands are not provided to the DSP at startup. In this case, the software assumes that the entire field of view (FOV) is completely free of any moving objects and will collect 60 frames, generating the average noise floor for each row, and when done, will output the rowNoise commands containing each range row's average noise value Nr. During normal runtime, the Arc removal algorithm operates on each frame's heatmap, one row at a time as described by the following pseudo-code using image processing translate and scale operations.
for each range row:
if (range_row_min_val > Nr)
row_range = range_row_max_val - range_row_min_val
scale_factor = 1.0 + ((range_row_min_val - Nr) / row_range
for each cell in the range row:
//Translate the row to zero and rescale
rescaled_val = (cell - range_row_min_val) * scale_factor
//Translate the scaled row to the noise floor
cell = rescaled_val + Nr
Heatmap Smoothing: Heatmap smoothing requires keeping the previous frame's heatmap in memory for comparison to the current heatmap. Each cell of the current heatmap is compared to the corresponding cell in the previous heatmap times a threshold. The threshold is simply a percentage (ie. 0.5 = 50%). The pseudo-code is:
for each cell in the heatmap:
cell_thresh = previous_cell * threshold
if (current_cell < cell_thresh)
current_cell = cell_thresh
So the effect is that sudden spikes in power will appear instantly, while sudden drops in power will fade over time, depending on the threshold level. The higher the threshold (up to 99%) the slower the fade. A threshold of zero disables smoothing, as heatmap values are always positive.