我有一个代表图像的2D矩阵。首先,我从这个图像中提取一条线(无论方向),我在一维垂直阵列中投影该线的像素值(具有图像的高度)。
这很有效。我可以在这个数组上执行很多操作。
之后,我需要将这个垂直数组重新插入到2D矩阵中相同位置的相同方向。
问题来自反向投影,我在重新整合的线上有很多漏洞..
Mat DataRaw::InsertLine(Mat image_full,Mat image, Point pointH, Point pointL)
{
float offset = 0;
float coef_dir = 0;
// Equation of the line
coef_dir = (float)(pointH.y-pointL.y)/(pointH.x-pointL.x);
offset = pointH.y - (coef_dir*pointH.x);
float x_cur = 0;
int x = 0;
float x_prev = 0;
for (int y = 0; y<image.rows; y++)
{
x_cur = (float)(y-offset)/coef_dir; // x courant
if (y > 0)
x_prev = (float)((y-1)-offset)/coef_dir; // x à y-1
x = (int)x_cur;
if (x_cur-x_prev > 1)
{
if (y >= 1)
image_full.at<uchar>(y-1,x) = image.at<uchar>(y,0);
}
image_full.at<uchar>(y,x) = image.at<uchar>(y,0);
}
return image_full;
}
PointL和PointH是线穿过的两个点。 我用这两点来计算线方程。
这是我在2D矩阵中重新插入行的功能,我尝试检查每个Y步的差异。但...
感谢您的帮助!
/ *****编辑****** /
我左边的问题,我想要的是: http://i.stack.imgur.com/bTB0s.png