matlab图像镜像,数字图像水平镜像,垂直镜像和平移的matlab编程

(x0,y0)为原图像上一点,图像水平平移量为tx,垂直平移量为ty,平移后的点为(x1,y1)

x1=x0+tx;y1=y0+ty,转换后x0=x1-tx;y0=y1-ty

这样平移后的图像上的每一点都可以在原图像中找到对应的点,可以根据x0和y0的值,判断原来的点是否在图像中,如果超出了原来图像的范围,就把点(x1,y1)的值设置成0(黑色)和255(白色).

int OriginX;

int OriginY;

for(int i=0;iheight;i++)

{

for(int j=0;jwidth;j++)

{

OriginX=j-m_XOffset;

OriginY=i-m_YOffset;

//if((OriginX>0)&&(OriginXwidth)&&(OriginY>0)&&(OriginYheight))

if(OriginX<0 || OriginY<0)

((uchar *)(tran->imageData+i*tran->widthStep))[j]=0;

else

((uchar *)(tran->imageData+i*tran->widthStep))[j]=((uchar *)(gray->imageData+OriginY*gray->widthStep))[OriginX];

;

}

}

镜像原理

for(int i=0;iheight;i++)

{

for(int j=0;jwidth;j++)

{

OriginX=(gray->width-j);

OriginY=i;

((uchar *)(tran->imageData+i*tran->widthStep))[j]=((uchar *)(gray->imageData+OriginY*gray->widthStep))[OriginX];

}

}

转置,在构建目标图时,要高度值和宽度值进行互换,转换时,目标坐标进行互换!

gray=cvCreateImage(cvSize(plmg->width,plmg->height),IPL_DEPTH_8U,1);

tran=cvCreateImage(cvSize(gray->height,gray->width),IPL_DEPTH_8U,1);

cvCvtColor(plmg,gray,CV_BGR2GRAY);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值