数值摄影测量 Digital Photogrammetry_第1页
数值摄影测量 Digital Photogrammetry_第2页
数值摄影测量 Digital Photogrammetry_第3页
数值摄影测量 Digital Photogrammetry_第4页
数值摄影测量 Digital Photogrammetry_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、數值攝影測量 Digital Photogrammetry黃國彥Decovolve the motion-affected image in homework #4.下圖為原圖,將其值經 Matlab 轉化後為一之三維矩陣。圖原圖圖經過 motion 後之圖造成影像 Motion 效果之操作步驟如下:將原影像由 Matlab 讀入,形成一之矩陣,。設計一個代表移動機制之二維 Filter,假設移動次數為,一次移動個 pixel 數,則將與做 Convolution 後可得處理過之影像,。可使用四種方法製造移動後之影像:法一所謂的移動效果(Motion Effect)是指在拍照時相機在左右或上下

2、方向並非是固定的,即曝光時每一格 Pixel 原先所對應的應為單一灰階或色調,但是由於移動的影響,使得每一格 Pixel 灰階或色調值為多格 Pixel 的疊加與均化,如下圖所示,以向右移動的情況為例:移動方向零矩陣零矩陣影像影像移動前新影像一次移動移動後之結果首先先將影像的各個 Pixel 數視為一個的矩陣,若是彩色的話則為一的矩陣。由於在移動時各 Pixel 的數值會往移動的方向平移一個該移動量的值,所以移動後此影像的矩陣與移動前的矩陣相比會在前方的列數上增加一零矩陣,故需將移動前的影像後方增加一等量的零矩陣方能做疊加與均化的動作。要注意的是,這一個增加的零矩陣亦會改變影像的尺度,故需在疊

3、加後將影像回復原先之尺度,虛線部份則是移動所影響的範圍。右圖為使用該法,移動十二次,一次移動五個Pixel數之像片。圖使用法一所產生之影像法二如法一,移動十二次,一次移動五個Pixel數,其 Filter 為使用 Matlab 內建語法 conv2 製造原影像與做 Convolution 之結果。法三如法一,移動十二次,一次移動五個Pixel數,其 Filter 同法二使用 Matlab 內建語法 imfilter 製造原影像與做 Convolution 之結果。圖使用法三所產生之影像圖使用法二所產生之影像其中 imfilter 與 conv2 相比之下, imfilter 是將視為一 Mas

4、k ,直接對上之每一個元素做 Convolution ;而 conv2 則是將也視為一張影像,故產生出來之新影像會增加行。法四將法二與法三所使用之擴充成一之矩陣,如此在與原影像矩陣相乘後才會同樣成為一之矩陣,而矩陣中除原有之元素外皆以零代替。根據 Convolution Theorm將與分別做 Fourier Transform 後,再將其相乘即可得到 Convolution 後之結果。然而由於 Matlab 在處理 Fourier Transform 時其內部運算機制似乎與一般做運算不同,經過上述步驟後無法產生預期的效果,甚至產生出來之影像可說幾乎看不出原影像之樣子。圖使用法四所產生之影像在

5、經過檢查後,經過 Fourier Transform 後再 Inverse 回來之的頻譜圖與原之頻譜圖並無不同,故只能推斷為 Matlab 其內部運算機制之問題。圖之頻譜圖要從移動機制以及移動後之影像找回原影像有兩種方法:法一下圖說明了 Convolution 時影像之變化1移動方向零矩陣零矩陣影像影像移動前新影像一次移動移動後之結果2可以看出,2部份在經過 Convolution 後由於其灰度不會受到移動機制的影響,故可以找回1。在得到1後,我們可以先將第二次 Motion 的部份回復其均化前之值,扣掉1所得到的即為第二次 Motion 前該區塊的灰度值。重覆以上步驟即可得到原影像。由於在最

6、後是採用法二,因此無法知道使用法一後所得到的影像是否可以完整重現出之灰度以及尺寸大小。法二在移動機制以及移動後之影像為已知的情況下,首先先各別對此兩者做 Fourier Transform 得到、。根據 Convolution Theorm將、兩者相除後,可得到。之後,即可得到原先之影像。然而因為雜訊之影響,同時也因為其檔案格式自八位元轉為浮點轉為再轉回八位元的變化,會造成灰度值之大小更動,故由-1()所得到的原影像仍舊無法和原影像一樣。且由於前述之原因,無法於 Matlab 中使用此法進行操作。附錄程式碼部份Decovolve the motion-affected image in hom

7、ework #4.clear all;format long;P=imread('c:p1.jpg'); %讀取圖檔,且矩陣P等於此圖檔之pixel矩陣C,R,N=size(P); %C,R,N分別為矩陣P之列數、行數與維度M=12; %M為移動之次數M_P=5; %一次移動M_P個pixel數pp=double(P); %設一矩陣pp為P之浮點數之格式%Case1.將灰度值視為一矩陣進行Convolutiondp1=double(pp); %由於圖片為uint8的格式,故在運算前需先轉為doublefor i=1:M pf(:,:,:,i)=zeros(C,M_P*(i-1)

8、,N) dp1 zeros(C,M_P*(M-i),N);endDP1(:,:,:)=pf(:,:,:,1);for i=2:M DP1=imadd(DP1,pf(:,:,:,i);end DP=imlincomb(1/M,DP1);figure,imshow(uint8(DP);%Case2.製造一個Filter以代表Motion之機制,使用conv2指令做ConvolutionMma(:,1:1)=1/M;Mma(:,2:M_P)=0;Mm=Mma;for i=1:M-1 Mm=Mm Mma; endCm,Rm,Nm=size(Mm);for i=1:N CP(:,:,i)=conv2(P

9、(:,:,i),Mm);endCc,Rc,Nc=size(CP);figure,imshow(uint8(CP);%Case3.以上一Case之Filter,使用imfilter指令做ConvolutionIP=imfilter(P,Mm);figure,imshow(IP);%Case4.將Filter與原影像做Fourier Transform後再以Convolution Theorm做ConvolutionMf=zeros(R,R);for i=1:Cm for j=1:Rm Mf(i,j)=Mm(i,j); endendfor i=1:N Pfo(:,:,i)=fft2(P(:,:,i)*fft2(Mf);endiPfo=uint8(ifft

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论