For propagation of red pixels, the current impl is actually using red pixels (supposed to be black) for the V-shaped comparison.
For e.g. left_near, let's assume center pixel is red.
Current Impl - int pointTemp = left_near - (1 + i) - i * width;
Here left_near is pixel on the left of center pixel, so it is black pixel.
then for i==0, pointTemp resolves to left_near - 1, which is again red, same as center pixel.
This is fixed in this PR.
Now, for i==0, pointTemp resolves to left_near - 1 - width, this is one pixel on diagonally up-left of left_near, which is what we want.
For propagation of red pixels, the current impl is actually using red pixels (supposed to be black) for the V-shaped comparison.
For e.g.
left_near
, let's assume center pixel is red. Current Impl -int pointTemp = left_near - (1 + i) - i * width;
Hereleft_near
is pixel on the left of center pixel, so it is black pixel. then fori==0
,pointTemp
resolves toleft_near - 1
, which is again red, same as center pixel.This is fixed in this PR. Now, for
i==0
,pointTemp
resolves toleft_near - 1 - width
, this is one pixel on diagonally up-left of left_near, which is what we want.