如何找到任何像素的切线?

时间:2012-10-31 06:38:45

标签: c#-4.0 graphics vector-graphics

我想在图像中的每个像素处找到切线。 注意:图像具有白色背景,形状边框颜色为块。

我做的是, Algo

While(true)
     take pixel 
     if pixel color is black 
           make 3 X 3 matrix => fill the matrix by surrounding pixel color
            ...means assume white =0 and black=1 then keeping selected pixel 
           at center for 3 X 3 matrix and finding all other value;
           ----------------------------here i want to find tangent line to selected pixel;
     end if
     Move to next pixel.
End  while 

请帮助考试。

1 个答案:

答案 0 :(得分:0)

您正在寻找的可能是Sobel Operator。它被实现为带有矩阵的像素周围的卷积:

-1 0 1
-2 0 2
-1 0 1

再次与:

-1 -2 -1
 0  0  0
 1  2  1

分别调用2个卷积x和y的结果。一旦你拥有它们,你可以通过取平方和的平方根来得到梯度的大小:

mag = sqrt(x * x + y * y);

和渐变的方向(应该与你正在检查的像素相切),将y的反正切取为x:

tangent = atan2(y / x)