[DSP编程] 在数组指针这里弄不明白了

[复制链接]
1413|7
 楼主| trysomething 发表于 2016-2-16 16:05 | 显示全部楼层 |阅读模式
在学ti c55x,试了下网上的图像处理例程后,自己参考着写了二值化的程序。

  1. #define IMAGEWIDTH 80
  2. #define IMAGEHEIGHT 80

  3. extern unsigned char dbImage[IMAGEWIDTH*IMAGEHEIGHT];    //dbImage待处理的图像
  4. extern unsigned char dbTargetImage[IMAGEWIDTH*IMAGEHEIGHT];   //dbTargetImage,二值化后的图像
  5. unsigned char *p2TargetImage;

  6. void img2bw(unsigned char *pImage, int nWidth, int nHeight)   // pImage <---dbImage
  7. {
  8.         unsigned int x, y,i;
  9.        
  10.         p2TargetImage = dbTargetImage;      //目标数组首地址赋给p2Tger指针
  11.         for (i=0; i<IMAGEWIDTH; i++, p2TargetImage++)  //   存在疑问的地方
  12.                 (*p2TargetImage) = 0;
  13.         for(x = 0; x< IMAGEHEIGHT; x++)
  14.         {
  15.                 for(y = 0; y< IMAGEWIDTH; y++)
  16.                 {
  17.                         if(*pImage <125)        *p2TargetImage = 0;
  18.                         else        *p2TargetImage = 255;
  19.                         pImage++;
  20.                         p2TargetImage++;
  21.                 }
  22.         }

  23. }

1。注释疑问的部分,为什么循环条件是<IMGWIDTH,定义的数组长度是IMGWIDTH*IMGHEIGHT啊,
按照上面的想法修改代码后,发现是错的,如果改成IMGWIDTH*IMGHEIGHT,,,发现最后二值化的数据传递到dbImage数组去了,也不知道为什么

2.注释疑问的地方代码存在有什么好处,不要也可以正常跑

多谢各位了,另外,感觉c5000做图像处理似乎不太合适诶,有谁出二手的DSP开发板出,好贵
zhangmangui 发表于 2016-3-1 23:21 | 显示全部楼层
没看明白
海中水 发表于 2016-3-2 11:50 | 显示全部楼层
问题没听太明白。
JY-DX-JY 发表于 2016-3-3 12:45 | 显示全部楼层
是不是不是一个指针啊?(*p2TargetImage)
*pImage淘宝上的C5000开发板不贵啊
luofeng2g 发表于 2016-3-3 13:15 | 显示全部楼层
for (i=0; i<IMAGEWIDTH; i++, p2TargetImage++)  //   存在疑问的地方
                (*p2TargetImage) = 0;
1.估计是写漏了,就是*p2TargetImage初始化而已;
2。通过后面程序可知,这步可以不要
 楼主| trysomething 发表于 2016-3-3 23:30 | 显示全部楼层

谢谢回答
2. 这句话可以不要,我也这样认为,事实上也没什么影响;

1. 这个初始化不是写漏,而是不能写成 i < IMAGEWIDTH*IMAGEHEIGHT, 不然后结果错误(
dbImage指向的是原始图像数组首地址,而p2TargetImage指向的是目标图像,也就二值化后的图像地址。
如果写成 i< IMAGEWIDTH*IMAGEHEIGHT, 在ccs3.3中,执行完该函数后,dbTargetImage未能正确显示预想的结果,而dbImage的图像产生了变化(之前一次调试是显示本该在dbTargetImage显示的二值图像,今天试了一下,虽然也是二值图像,但该图像沿对角线平移了一些))在CCS v4也调了下,也是这样莫名其妙的错误,但是现象有点不同。而  i < IMAGEWIDTH的话,一切正常。
luofeng2g 发表于 2016-3-4 09:17 | 显示全部楼层
trysomething 发表于 2016-3-3 23:30
谢谢回答
2. 这句话可以不要,我也这样认为,事实上也没什么影响;

你也可以像下面那种方式写,试试;还有具体现象是什么,说清楚点!
 楼主| trysomething 发表于 2016-3-4 13:09 | 显示全部楼层
luofeng2g 发表于 2016-3-4 09:17
你也可以像下面那种方式写,试试;还有具体现象是什么,说清楚点!


后续sobel函数的先不说了,也是奇怪的结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

15

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部