大家帮忙看看这是什么插值,它是利用权值来更新相邻四个点的灰度,是不是PV插值的另外一种表现形式

panyang_22 2009-03-10 04:18:25
void CCxy1Doc::greychaz()
{
int i,j;
for(i=0;i <m_dibsize2.cx;i++)
{
for(j=0;j <m_dibsize2.cy;j++)
{
imagechang[i+j*m_dibsize2.cx]=0;
}
}

int i0,j0;
/////////////////
//计算变换后的坐标及对应的灰度值
for(i=0;i <m_dibsize2.cx;i++)
{
for(j=0;j <m_dibsize2.cy;j++)
{
double temp1,temp2;
double orginx=(m_dibsize2.cx-1)/2.0;//中心点(x,y)
double orginy=(m_dibsize2.cy-1)/2.0;
//引用了书上的,B到B'的变换公式,temp1为横坐标,temp2为纵坐标
temp1=m_extend*(orginx+sin(m_rotation)*(orginy-j)-cos(m_rotation)*(orginx-i)+m_displacex-orginx)+orginx; //geometric transformation
temp2=m_extend*(orginy-cos(m_rotation)*(orginy-j)-sin(m_rotation)*(orginx-i)+m_displacey-orginy)+orginy;
if(temp1>=0) /*(temp1,temp2)取整为(i0,j0)*/
i0 = (int)(temp1 + 0.5);
if(temp1 <0)
i0= (int)(temp1-0.5);
if(temp2>0)
j0 = (int)(temp2+0.5);
if(temp2 <=0)
j0 = (int)(temp2 - 0.5);
changx[i+j*tt]=i0;
changy[i+j*tt]=j0;

int x1=int(temp1);
int y1=int(temp2);
int x2=x1+1;
int y2=y1+1;

if((x2 <300)&&(x1>0)&&(y2 <300)&&(y1>0))
{
double mx,my,dx,dy,d1,d2,d3,d4,px,py;
mx=modf(temp1,&px);
my=modf(temp2,&py);
if((mx!=0)||(my!=0))
{
//determin the weoghts

dx=temp1-x1;
dy=temp2-y1;

d1=(1-dx)*(1-dy);
d2=dx*(1-dy);
d3=dx*dy;
d4=(1-dx)*dy;
//count the histogram

int gre;
gre=dib2.m_lpImage[i+j*m_dibsize2.cx];
imagechang[x1+y1*m_dibsize2.cx]+=gre*d1;
imagechang[x2+y1*m_dibsize2.cx]+=gre*d2;
imagechang[x2+y2*m_dibsize2.cx]+=gre*d3;
imagechang[x1+y2*m_dibsize2.cx]+=gre*d4;
}
else
imagechang[int(temp1)+int(temp2)*m_dibsize2.cx]+=dib2.m_lpImage[i+j*m_dibsize2.cx];
}
}
}

}
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
d3renlian 2009-12-16
  • 打赏
  • 举报
回复
这是图像的旋转变换+pv插值
wwoo_1105 2009-05-26
  • 打赏
  • 举报
回复
帮顶
dingdingko 2009-05-26
  • 打赏
  • 举报
回复
顶起!看不明白!
liliangbao 2009-04-26
  • 打赏
  • 举报
回复
帮顶~~~
sagegz 2009-03-10
  • 打赏
  • 举报
回复
UP~!
  • 打赏
  • 举报
回复
楼主应该发图像区。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧