| 查看: 413 | 回复: 1 | ||
shawmarkk银虫 (初入文坛)
|
[求助]
求助用于电子稳像的灰度投影算法源码 已有1人参与
|
| 求助用于电子稳像的灰度投影算法源码!急急急! |
» 猜你喜欢
全日制(定向)博士
已经有5人回复
假如你的研究生提出不合理要求
已经有10人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
» 本主题相关价值贴推荐,对您同样有帮助:
图像配准技术 在工业领域的具体应用背景
已经有6人回复
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
shawmarkk: 金币+200, ★★★★★最佳答案 2015-07-06 18:14:05
感谢参与,应助指数 +1
shawmarkk: 金币+200, ★★★★★最佳答案 2015-07-06 18:14:05
|
%投影法,投影修正,余弦滤波 %水平方向最大偏移正负20个象素 %垂直方向最大偏移正负30个象素 clear all mov=aviread('v2.avi'); g=[]; for t=50:80 mov(t).cdata=rgb2gray(mov(t).cdata); g=cat(3,g,mov(t).cdata); end gr=[]; gr=cat(3,gr,g(:,:,1)); frow=30; fcol=20; referenceframe=g(:,:,1); refprojrow=zeros(240,1); refprojcol=zeros(1,320); %行投影 refprojrowsum=0; for i=1:240 for j=1:320 refprojrow(i)=refprojrow(i)+double(referenceframe(i,j)); end refprojrowsum=refprojrowsum+refprojrow(i); end refprojrowmean=refprojrowsum/240; refprojrow=refprojrow-refprojrowmean; figure;plot(refprojrow); for i=1:240 if (i240-frow) refprojrow(i)=refprojrow(i)*(1+cos(pi*(frow-1-i)/frow))/2; end end hold on plot(refprojrow,'r'); %列投影 refprojcolsum=0; for j=1:320 for i=1:240 refprojcol(j)=refprojcol(j)+double(referenceframe(i,j)); end refprojcolsum=refprojcolsum+refprojcol(j); end refprojcolmean=refprojcolsum/320 refprojcol=refprojcol-refprojcolmean; figure;plot(refprojcol); for j=1:320 if (j240-fcol) refprojcol(j)=refprojcol(j)*(1+cos(pi*(fcol-1-j)/fcol))/2; end end hold on ; plot(refprojcol,'r'); for t=2:20 t currentframe=g(:,:,t); %行投影 curprojrow=zeros(240,1); curprojrowsum=0; for i=1:240 for j=1:320 %refprojrow(i)=refprojrow(i)+double(referenceframe(i,j)); curprojrow(i)=curprojrow(i)+double( currentframe(i,j)); end curprojrowsum=curprojrowsum+curprojrow(i); end curprojrowmean=curprojrowsum/240; curprojrow=curprojrow-curprojrowmean; for i=1:240 if (i240-frow) curprojrow(i)=curprojrow(i)*(1+cos(pi*(frow-1-i)/frow))/2; end end %figure;plot(refprojrow);hold on %plot(curprojrow,'r');xlabel('行投影') %180单位的相关运算 %垂直方向最大偏移正负30个象素 cr=zeros(1,61); for j=1:61 for i=1:180 cr(j)=cr(j)+(refprojrow(j+i-1)-curprojrow(30+i))^2; end end %figure;plot(cr,'g'); xlabel('垂直方向') [b,jmin]=min(cr); dy=31-jmin %列投影 curprojcol=zeros(1,320); curprojcolsum=0; for j=1:320 for i=1:240 %refprojcol(j)=refprojcol(j)+double(referenceframe(i,j)); curprojcol(j)=curprojcol(j)+double(currentframe(i,j)); end curprojcolsum=curprojcolsum+curprojcol(j); end curprojcolmean=curprojcolsum/320; curprojcol=curprojcol-curprojcolmean; for j=1:320 if (j240-fcol) curprojcol(j)=curprojcol(j)*(1+cos(pi*(fcol-1-j)/fcol))/2; end end %figure;plot(refprojcol);hold on; %plot(curprojcol,'r'); xlabel('列投影') %水平方向最大偏移正负20个象素 %280单位的相关运算 cc=zeros(1,41); for i=1:41 for j=1:280 cc(i)=cc(i)+(refprojcol(j+i-1)-curprojcol(20+j))^2; end end %figure;plot(cc,'g'); xlabel('水平方向') [a,imin]=min(cc); dx=21-imin if dy<0 %dy<0,图currentframe相对于referenceframe向上运动了|dy| a=zeros(abs(dy),320); guoduframe=[a;currentframe(1:240-abs(dy), ]; elseif dy>0 %dy>0,图currentframe相对于referenceframe向下运动了|dy|, a=zeros(dy,320); guoduframe=[currentframe(1+abs(dy):240, ;a]; else guoduframe=currentframe; end if dx<0 %dx<0,图currentframe相对于referenceframe向左运动了|dx| c=zeros(240,abs(dx)); buchangframe=[c,guoduframe(:,1:320-abs(dx))]; elseif dx>0 %dx>0,图currentframe相对于referenceframe向右运动了|dx| c=zeros(240,dx); buchangframe=[guoduframe(:,abs(dx)+1:320),c]; else buchangframe=guoduframe; end %figure;imshow(buchangframe); gr=cat(3,gr,buchangframe); %referenceframe=buchangframe; %refprojrow=curprojrow; %refprojcol=curprojcol; end |
2楼2015-07-06 14:59:57












回复此楼
];