微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 算法(七):imglib之像素转换

算法(七):imglib之像素转换

时间:10-02 整理:3721RD 点击:

由于一些imglib的函数所需的图像像素不同,若是一定要使用imglib的函数,要就要进行像素的转换了。

下面这个是将8位像素扩展到16位像素的函数,可以看到只是一个数据类型的转换了。

在此之前也是判断了输入、输出数据是不是8字节对齐的。


  1. void IMG_pix_expand
  2. (   
  3.     int n,
  4.     const unsigned char *restrict in_data,
  5.     short               *restrict out_data
  6. )
  7. {   
  8.     int i;

  9.     _nassert((int) in_data  % 8 == 0);
  10.     _nassert((int) out_data % 8 == 0);

  11.     #pragma MUST_ITERATE(16,,16);
  12.     #pragma UNROLL(16);
  13.     for (i = 0; i < n; i++)
  14.         out_data[i] =  in_data[i];
  15. }

复制代码


而对于16位像素缩减到8位像素的函数,就是要将大于255的设置为255,小于0的置为0。由于输入是short类型的数据,所以会有小于0的情况。

而对于8位灰度图,它的像素值总是在0~255之前,所以经过两次变换后,应与原8位灰度图是一样的。


  1. void IMG_pix_sat
  2. (
  3.     int                     n,
  4.     const short   *restrict in_data,
  5.     unsigned char *restrict out_data
  6. )
  7. {
  8.     int i;

  9.     if (!n) return;
  10.     _nassert((int) in_data  % 8 == 0);
  11.     _nassert((int) out_data % 8 == 0);

  12.     /* -------------------------------------------------------------------- */
  13.     /*  Process incoming pixels up to 16 at a time.                         */
  14.     /* -------------------------------------------------------------------- */
  15.     #pragma MUST_ITERATE(8,,8);
  16.     #pragma PROB_ITERATE(32);
  17.     #pragma UNROLL(4);
  18.     for (i = 0; i < n; i += 4)
  19.         _amem4(&out_data[i]) = _spacku4( _hill(_amem8_const(&in_data[i])),
  20.                                                                                                                                                                  _loll(_amem8_const(&in_data[i])) );
  21. }

复制代码


前面已经将24位真彩转成了8位灰度图,那么现在将8位灰度图转成16位再将16位转换回8位,结果应该是与原图一样的。

实现过程如下:


  1. IMG_pix_expand(bmpWidth*bmpHeight,Image,out);
  2. IMG_pix_sat(bmpWidth*bmpHeight,out,Image);

复制代码


第一个参数是图像的像素,也就是高*宽。

最后的结果是与原图相同的,如下:



最后和源码与二进制文件会在最后的结项中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top