2008年12月19日 星期五

CH6

CH6
Image geometry圖像幾何學
主要用途: 圖像的縮放
6.1 Interpolation of Data
當在一線段中,含有四點,並將這四點變成8點時
內插(插值)法interpolation :
=>將兩點中間放入新的數值
修改: nearest-neighbor interpolation為新的值xi'數值的取法是取周圍離自己最近的xi
(就是離數值x1較近=>xi'=x1)
Linear interpolation 線性內插法
http://zh.wikipedia.org/w/index.php?title=%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC&variant=zh-tw

=>Another way is to join the original function values by straight lines and take our interpolation values at this lines.
(簡單說這次就是加入原點與點之間的變化內=>跟著線條高度放)
公式為:


最後F為:

6.2 Image interpolation
內插法應用於圖像中

假設將4x4大小的圖像,變成8x8的圖像
=>使用interpolation
=>將新點設定好
=>先設定y軸的內插情況,然後再利用新結果計算出x軸要放的值
公式為:
(最後的工是有點麻煩= =…..要把f(x,y’)的公式也放出來)

Bilinear interpolation
=>用法較簡單
=>直接將兩條線段的公式直接計算取出新的點(不像前面很複雜)
參考網站:
http://zh.wikipedia.org/w/index.php?title=%E5%8F%8C%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC&variant=zh-tw

使用MATLAB語法觀察nearest 跟bilinear的差別
c=imread('cameraman.tif');
head=c(33:96,90:153);//取特定一區域
//大小縮放加上使用interpolation
head4n=imresize(head,4,'nearest'),imshow(head4n); figure;
head4b=imresize(head,4,'bilinear'),imshow(head4b);
結果可看出bilinear較平滑一點
(左為使用nearest,右圖為使用bilinear)
從這邊可以看出bilinear 跟nearest的不同
Nearest=>先將一軸中要被變換的公式易起放入在計算一次(等於一個軸就要進行兩個軸的變換)
Bilinear=>兩軸各算各的,在合併,所以較簡單
=>圖形縮放上,如果出現的格子狀越明顯,代表效果較差
6.3 General Interpolation
經由老師上課解釋以後可以知道,之前的Interpolation 都是以線性的方式去取新的值,

而新的方式則是利用非線性的去取縮放的值

假如要計算x1、x2之間的X’

我們不適用之前的線性的方式取的新的座標位置

而是稍微有點變化的方式去算(參考P127 fig.6.12)
=>Bicubic interpolation(非線性的方法)

利用MATLAB分析
head4c=imresize(head,4,'bicubic'),imshow(head4c);


不過我看到圖的時候納悶了一下= =?
然後跟放大的原圖相減èhead4c-head4x= 全部為0= =?

6.4 Enlargement by Spatial Filtering
利用空間濾波放大影像
=>first step is to create a zero-interleaved version of this matrix
(第一個步驟即是在矩陣中插入零)
MATLAB語法Zeroint()
(這個語法要自己設定= =)
產生結果
m2=zeroint(m)
ans =
16 0 5 0 9 0 4 0
0 0 0 0 0 0 0 0
2 0 11 0 7 0 14 0
0 0 0 0 0 0 0 0
3 0 10 0 6 0 15 0
0 0 0 0 0 0 0 0
13 0 8 0 12 0 1 0
0 0 0 0 0 0 0 0

function out=zeroint(a)
[m,n]=size(a);
a2=reshape([a;zeros(m,n)],m,2*n);
out=reshape([a2';zeros(2*n,m)],2*n,2*m);
(以上為打錯的function)
imshow(zeroint(head))
(突然覺得很有趣= =)

out=reshape([a2';zeros(2*n,m)],2*n,2*m);(忘了轉置)
由圖就可以知道,使用zeroint以後會產生亮暗變化的形式


6.5 Scaling Smaller比例縮小
Making an image smaller is also called image minimization
(影像最小化?)
1.其中一種方法=>刪除間隔的像素(subsampling縮減取樣)

6.6 Rotation旋轉
使用
相同的方法,如果要轉回原來的值
使用語法:
Imrotate()

imrotate(c,60);
figure,crc=imrotate(c,60,'bicubic');
imshow(crc)
>> figure,imshow(c)
左圖為imrotate(c,60),右圖為crc=imrotate(c,60,'bicubic')
6.7 Anamorphosis
(歪像)

=>主要是經過熟慮後將圖像形狀扭曲

=>看起來早在16th就有了

=>課本中有關於還原扭曲的影像的語法(不過我沒有這類的圖= =,所以沒跑)


心得:
1.昨天做完臨床報告以後,不小心睡著了= =,……..到早上4點半才醒過來,所以寫的作業非常隨便= =(天阿,我怎麼睡著了)
2.醫工年會結束,在這次醫工年會上,我有報告應用影像處理的膚質檢測結果,之前只想過有弄出來就好了,後來沒再改多少(也因為開學了),說實在,我們報告的東西還不是很足夠(很多方面都沒有克服,也沒有做太多實驗去分析結果,幾乎是趕著弄出來的東西),甚至只能說只有剛開始,後來要繼續改良才可以 = =
醫工相關儀器的重點!!可以廣泛用於各類型的人,而且準確度要夠高(這些的確還要再努力改進)

沒有留言:

張貼留言