2008年10月23日 星期四
第七週 第三章心得
CH3 Image display(影像顯示)
3-1
在這一章會詳細的介紹 image display ,我們用imshow function並且show出
如何解析空間上的問題和quantization(量子化?)可能影響image的顯示和外觀。
當然還有一個非常主觀的問題是,沒有二個人不會精確地同意不同的image 的特性。最後對一張 image 來說有兩個最重要的特性:就是解析空間上的問題和quantization(量子化?)。
3-2
Basic of image display(基本的影像顯示)
一個灰色數值image的像素值能用一個矩陣來表示,意思就是image內的value可以按照image的位置放在相對應的矩陣位置。
然而在這個的問題就這理是要在電腦螢幕上顯示matrix(矩陣)。
有幾個因素會影響image的顯示比如:
1. ambient lighting
2. the monitor type and setting
3. the graphics card, and
4. monitor resolution
1. 漫射光
光波照射介質質點時,引起共振作用,使入射光會向任意方向分散的現象,且光波頻率較高者,較易被散射。(以上是物理方面的解釋),老師也有舉個例子
像在教室內沒開燈,可是依然會感覺到很亮,那是因為外面的太陽光的漫射進教室內。
2. 螢幕類型和設定
電腦的螢幕像在桌面按右鍵內容,就可以更改螢幕的解析度和色彩品值等等。
3. 顯示卡
顯示卡是顯示影像用的,主要在顯示顏色數、解析度、更新頻率等等
4. 螢幕解析度
螢幕解析度可以調整目前螢幕是由幾乘幾的像素所組成。
一個基本的MATLAB 顯示image的function是指令 image()
這個function 只是簡單的顯示一個矩陣
當然,他也不會有很好的效果。
實際操作一下
這是拿灰階image去試的效果,嗯,果然如傳說中的變成一大片紅色了。
問題:為什麼拿灰階image 會有這樣效果呢?
書上提到事實上去顯示image 我們還需要再加幾個額外的指令
1. Truesize:
顯示一個矩陣的要素就是螢幕的像素。大部分我們會用truesize([256 256])這個指令,他這個指令意思是用在會依據所給的數字,來引導螢幕解析度的垂直和水平進而來顯示image。簡單說就是調整image所要顯示的size大小。不過沒有明確地說明size的話,他會用電腦系統默認值顯示image(?)
2. Axis off:他是關掉中心線標記(不瞭書上意思?)
3. colormap(gray(247)):這個指令可以調整image原先自己的 color map
而去用灰色的色度。
書上就有舉例假如想image暗一點 就在colormap(512)內輸入512
反之,要亮一點就輸入128。
3-3
The imshow function
這邊講到imshow function的用法
我們可以選擇兩個類型可以來顯示矩陣
1. Convert to type uint8 and then display
2. Display the matrix directly
1. 是指轉換成uint8的類型。
2. 是直接顯示矩陣,不作類型轉換。
第二個是可行的,因為imshow顯示矩陣的類型是double,當一個灰階image只要他的矩陣的要素是在0~1之間。
來實際操作一下
這是把左邊灰階的image轉換成double類型後的結果,感覺蠻奇妙的,怎麼會變成那樣,沒辦法完整的看出全部。
下面解釋說若image的values 介於0~1之間的話,Avalue ν並且ν介於0~1之間將被顯示成灰階 255ν。相反地若values 大於1的話將被顯示1(white)
並且values 小於0的話將被顯示0(black)。
很好,看不懂!
再來若要顯示出cd這個矩陣的話,我們需要以0~1的比例,一個最簡單的分法是利用255來區分所有的values。
果然能顯示了,
而且也可以利用這個來敢變image的矩陣的比例
除以512的話整個image變暗了;返之除以128後變亮了!
cd=im2double(c);
這個指令是把原先cd的存values 範圍0~255 轉換成0~1的比例。
而這兩個指令
c2=uint8(255*cd);
第一個是把cd*255轉換uint8類型後存在c2矩陣。
c3=im2uint8(cd);
第二個是利用im2uint8把cd矩陣轉換uint8類型後存在c3矩陣。
再來46頁的
C1=c>120 這個指令
我看不太懂,我看workspace的c1後,他是顯示256乘256的矩陣
Values 是0或1。
但是c1的類型是logical(?) 這是什麼東西?
下面的指令更奇妙
c1 256x256 65536 uint8 array (logical)
這個執行下去出現錯誤。。。我好錯愕
他說c1先前被當作是可變的(好謎呀?)
已解答:那個並不是指令,我誤以為是指令,實際上那是c1的存檔資訊幾成幾,檔案類型等等 by 猛哥
3-4
Bit planes(bit 程度)
這邊應該是把cd矩陣連續除以2的次方然後再除以2取餘數後,
再看final bite 是0還是1,
下圖就是c0~c7的圖
慢慢的從低位元抓出來看final bite 是0還是1,
最後到128時就與原先的image 差不多了。
然而我們也可以利用c0~c7來還原最初的image
cc=2*(2*(2*(2*(2*(2*(2*c7+c6)+c5)+c4)+c3)+c2)+c1)+c0;
這樣就可以顯示出跟c矩陣show出來的image一樣了。
3-5
Spatial resolution(空間的解析)
看書上的圖片解釋,是從矩陣內取出部分的values來呈現一個image
像這個指令 imresize(x,1/2); 秀出來後跟原image不會差太多
而再從x矩陣內再取出部分的values
x2=imresize(imresize(x,1/2),2);
之後,image開始有些模糊了
我又再把x矩陣存了x,x2,x3,x4,x5,x6等
果然image越來越模糊了
最後心得總結:
第三章前面還好,大致上還能瞭解,慢慢的3-5、3-6開始有些許看不明瞭了
或許是不夠時間去看書上的內文,自己一開始看第三章時,先用快速大概看過去,遇到自己不知道意思的英文單字,就看前後文自己大概猜一下意思,還是猜不出來就先放棄跳過,往後面邁進。而且感覺第三章比起第二章整體來說有便困難些了。
沒有留言:
張貼留言