C ++ 1d线反投影到2d矩阵

时间:2015-09-01 14:45:24

标签: c++ arrays image matrix projection

我有一个代表图像的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

0 个答案:

没有答案