【问题标题】:Image Processing How to Apply gradient [-1 | 0 | 1 ] to RGB image图像处理 如何应用渐变 [-1 | 0 | 1]转RGB图像
【发布时间】:2014-06-20 23:15:48
【问题描述】:

我需要将渐变运算符应用于 RGB 位图图像。它适用于 8 位图像,但难以实现 24 位图像。这是我的代码。任何人都可以看到如何 将水平梯度操作校正为RGB图像。

if (iBitPerPixel == 24)  ////RGB 24 bits image
{

    for(int i=0; i<iHeight; i++)
    for(int j=1; j<iWidth-4; j++)
    {
        //pImg_Gradient[i*Wp+j] = pImg[i*Wp+j+1] - pImg[i*Wp+j-1] ;
        int level = pImg[i*Wp+j*3+1] - pImg[i*Wp+j*3-1] ;
        pImg_Gradient[i*Wp+j*3] = level;


    //  pImg_Gradient[i*Wp+j*3] =  level;
    //  pImg_Gradient[i*Wp+j*3+1] = level;
    //  pImg_Gradient[i*Wp+j*3+2]= level;
    }

    for(int i=0; i<iHeight; i++)
        for(int j=0; j<iWidth; j++)
    {
        // Copy the convetred values to original image.
        pImg[i*Wp+j] = (BYTE) pImg_Gradient[i*Wp+j];
    }
        //delete pImg_Gradient;
}

【问题讨论】:

    标签: c++ image-processing bitmap gradient


    【解决方案1】:

    不幸的是,目前尚不清楚如何定义 RGB 图像的渐变。最好的方法是将图像转换为将强度与颜色分开的颜色空间,例如 HSV,并计算强度分量的梯度。或者,您可以分别计算每个颜色通道的梯度,然后以某种方式组合结果,例如取平均值。

    另见Edge detectors for RGB images?

    【讨论】:

      【解决方案2】:

      为了计算图像的梯度(这是一个向量),您需要计算图像的水平和垂直导数。

      由于我们处理的是离散图像,我们应该使用导数的有限差分逼近。
      有很多近似的方法,其中许多都列在维基百科页面上:

      http://en.wikipedia.org/wiki/Finite_difference

      http://en.wikipedia.org/wiki/Finite_difference_method

      http://en.wikipedia.org/wiki/Finite_difference_coefficients

      基本上这些是空间系数,因此您可以使用它们定义过滤器并仅过滤图像。
      这将是计算梯度最有效的方法。

      所以,你只需要找到一个支持过滤图像的库(例如 Open CV)就可以了。

      对于彩色图像,通常只需计算每个颜色通道的渐变。

      祝你好运。

      【讨论】:

        【解决方案3】:

        来自您的代码;您正在尝试从 RGB 计算梯度,但没有任何迹象表明 RGB 是如何存储在您的图像中的。一个完整的猜测是,在您的图像中,您有 BGRBGRBGR...等。

        在这种情况下,您的代码将从绿色通道获取渐变,然后将其存储在渐变图像的红色中。您没有显示渐变图像被清除为 0 - 如果您不这样做,那么它可能会充满垃圾。

        我的建议是先转换成灰度图;然后你可以使用你的原始代码。 或者为每个颜色通道计算一个渐变。

        【讨论】:

          猜你喜欢
          • 2018-11-30
          • 2013-03-17
          • 2021-02-10
          • 2018-08-07
          • 2012-07-14
          • 2021-05-23
          • 1970-01-01
          • 2019-12-18
          • 1970-01-01
          相关资源
          最近更新 更多