打印

图像的旋转实验DSP6000

[复制链接]
1791|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Flower1|  楼主 | 2017-8-8 12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
图像的旋转实验DSP6000

数学表达式原理:

下面我们来推导一下旋转运算的变换公式。如下图所示,点(x0,y0)经过旋转θ度后
坐标变成(x1,y1)。其数学表达式为:
X0=x1cos(θ)+y1sin(θ)+ccos(θ)-dsin(θ)+a ;
Y0=-xsin(θ)+y1cos(θ)+csin(θ)-dcos(θ)+ b

算法的C语言代码:

/*图像旋转参数*/
Float fAngle=3.1415927/3; //旋转的角度
*画矩形边框函数*/
Void drawRectangle();
*计算图像旋转参数*/
Void computeParameter();
/*进行图像旋转处理*/
void rotate()
{
          int i,j,intInc;
          int intCapYInc;
          int intCapX,intCapY;

         /*进行图像旋转,重新赋值*/
          //方框内奇数行
          for(i=intALines;i<intDLines;i++)
          {
              for(j=intAPixels;j<intDPixels;j++)
             {
             intInc = i*2;   

            intCapX    = (int)(j*cosAngle + intInc*sinAngle + f1 + 0.5);
             intCapYInc = (int)(intInc*cosAngle - j*sinAngle + f1 + 0.5);           

            if((intCapYInc%2)==0)
             {
                      intCapY = intCapYInc/2;
             }
             else
             {
                      intCapY = (intCapYInc-1)/2+numLines/2;
             }

            //判断是否在原图范围内
             if((intCapX>=0) && (intCapX<numPixels) && (intCapY>=0) && (intCapY<numLines))   
             {
                                //传送亮度信号
                                 *(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(capYbuffer + intCapY*numPixels + intCapX);                                                                          
                  }
            else
             {
                       *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0xFF;
             }

                   }        
          }

         //方框内偶数行
          for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)
          {
              for(j=intAPixels;j<intDPixels;j++)
             {                 
             intInc = (i-numLines/2)*2 + 1;

            intCapX    = (int)(j*cosAngle + intInc*sinAngle + f1 + 0.5);
             intCapYInc = (int)(intInc*cosAngle - j*sinAngle + f1 + 0.5);           

            if((intCapYInc%2)==0)
             {
                      intCapY = intCapYInc/2;
             }
             else
             {
                      intCapY = (intCapYInc-1)/2+numLines/2;
             }            

            //判断是否在原图范围内
             if((intCapX>=0) && (intCapX<numPixels) && (intCapY>=0) && (intCapY<numLines))   
             {
                                //传送亮度信号
                                 *(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(capYbuffer + intCapY*numPixels + intCapX);                                                                          
                  }
            else
             {
                       *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0xFF;
             }

                   }        
          }        
}

相关帖子

沙发
zhangmangui| | 2017-8-8 20:30 | 只看该作者
结合公式理解就方便多了。

使用特权

评论回复
板凳
zhangmangui| | 2017-8-8 20:31 | 只看该作者
如果再结合几张效果图就完美了

使用特权

评论回复
地板
quickman| | 2017-8-8 23:19 | 只看该作者
图像选择不就是转置矩阵吗?

使用特权

评论回复
5
jstgotodo| | 2017-8-8 23:19 | 只看该作者
这个是图像压缩了吗

使用特权

评论回复
6
iamaiqiyi| | 2017-8-8 23:20 | 只看该作者
图像旋转有什么用?

使用特权

评论回复
7
dzfansman| | 2017-8-8 23:21 | 只看该作者
旋转角度怎么传递?

使用特权

评论回复
8
sanxingnote7| | 2017-8-8 23:21 | 只看该作者
改变移植到代码里面看看怎么样

使用特权

评论回复
9
backlugin| | 2017-8-8 23:22 | 只看该作者
如果图像保存到ram里面怎么能够正常旋转?

使用特权

评论回复
10
sdCAD| | 2017-8-8 23:23 | 只看该作者
这个计算一个图片需要多长时间?

使用特权

评论回复
11
fengm| | 2017-8-8 23:23 | 只看该作者
这个变量函数有点复杂

使用特权

评论回复
12
mmbs| | 2017-8-8 23:24 | 只看该作者
旋转运算的变换公式看不太懂

使用特权

评论回复
13
quickman| | 2017-8-8 23:24 | 只看该作者
以前都是在代码中直接实现,没有写过算法。

使用特权

评论回复
14
jstgotodo| | 2017-8-8 23:24 | 只看该作者
用的哪个处理器设计的?

使用特权

评论回复
15
iamaiqiyi| | 2017-8-8 23:24 | 只看该作者
现在在电脑编程中都以指令可以实现了。

使用特权

评论回复
16
dzfansman| | 2017-8-8 23:24 | 只看该作者
如果做图像修正应该用什么算法

使用特权

评论回复
17
sanxingnote7| | 2017-8-8 23:24 | 只看该作者
想做一个横屏实现,不知道能不能实现

使用特权

评论回复
18
backlugin| | 2017-8-8 23:24 | 只看该作者
是否需要借助其他的存储器?

使用特权

评论回复
19
sdCAD| | 2017-8-8 23:24 | 只看该作者
C6000的图片计算效率怎么样

使用特权

评论回复
20
fengm| | 2017-8-8 23:24 | 只看该作者
转换原理是不是矩阵变换?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

623

主题

887

帖子

6

粉丝