你好,游客 登录
背景:
阅读新闻

灰度图像和彩色图像互相转换 - Augusdi的专栏

[日期:2013-03-16] 来源:  作者: [字体: ]

http://blog.csdn.net/zhenxiaohui/article/details/4389204

1.彩色图像到灰度图的转换公式

Gray(i,j)=0.11 * R(i,j) + 0.59 * G(i,j) + 0.3 * B(i,j)

 在OpenCV中采用的是下面公式

Gray = 0.212671 * R + 0.715160 * G + 0.072169 * B +0 *A

 

 

2.灰度到伪彩色的转换公式
  f表示某一像素点的灰度   

 if   0<=f<63   then   
  begin   
      r   :=0;   g   :=254-4*f;   b   :=255;   
  end;   
  if   64<=f<127   then   
  begin   
      r   :=0;   g   :=4*f-254;   b   :=510-4*f;   
  end;   
  if   128<=f<191   then   
  begin   
      r   :=4*f-510;   g   :=255;   b   :=0;   
  end;   
  if   192<=f<=255   then   
  begin   
      r   :=255;   g   :=1022-4*f;   b   :=0;   
  end;   
    
  //灰度图像转成伪彩色实例:   
  procedure   GrayToColor(Bmp:   TBitmap);   
  var   
      i,   j,   uG:   Integer;   
      P:   PByteArray;   
  begin   
      Bmp.PixelFormat   :=   pf24bit;   
      for   j   :=   0   to   Bmp.Height   -   1   do   
      begin   
          P   :=   Bmp.ScanLine[j];   
          for   i   :=   0   to   Bmp.Width   -   1   do   
          begin   
              uG   :=   P[3   *   i];   
              if   (0   <=   uG)   and   (uG   <   63)   then   //灰度------>伪彩色   
              begin   
                  P[3   *   i   +   2]   :=   0;   
                  P[3   *   i   +   1]   :=   254   -   4   *   uG;   
                  P[3   *   i]   :=   255;   
              end;   
              if   (64   <=   uG)   and   (uG   <   127)   then   
              begin   
                  P[3   *   i   +   2]   :=   0;   
                  P[3   *   i   +   1]   :=   4   *   uG   -   254;   
                  P[3   *   i]   :=   510   -   4   *   uG;   
              end;   
              if   (128   <=   uG)   and   (uG   <   191)   then   
              begin   
                  P[3   *   i   +   2]   :=   4   *   uG   -   510;   
                  P[3   *   i   +   1]   :=   255;   
                  P[3   *   i]   :=   0;   
              end;   
              if   (192   <=   uG)   and   (uG   <=   255)   then   
              begin   
                  P[3   *   i   +   2]   :=   255;   
                  P[3   *   i   +   1]   :=   1022   -   4   *   uG;   
                  P[3   *   i]   :=   0;   
              end;   
          end;   
      end;   
  end;  






收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻