這週進入第三章了,感覺越來越難了。所以照著課本上面的指令打一次!!!
3.2 Basics of Image Display
顯示圖像在電腦時,會有以下因素影響輸出:
1.Ambient lighting(環境光源)
2.The monitor type and settings(螢幕的類型和設定):LCD和CRT的差異。
3.The graphics card(顯示卡):將畫面顯示在電腦螢幕上
4.Monitor resolution(螢幕解析度):是使用者在螢幕上看影像時,所感受到的解析度。螢幕解析度由Display Card所決定的,並不是由螢幕所決定。螢幕解析越高,你在螢幕上所見的影像更細緻,色彩更為逼真。
Matlab中,基本的影像輸出函數--image()
是很基本的函數,用函數輸出圖片
如果要避免灰階圖片的錯誤,就要加入以下的指令:
1.truesize:顯示圖片時,顯示實際大小。
2.axis off:顯示圖片時,會把顯示旁邊的長度和寬度表關掉。
3.colormap():用size(unique(c))來查詢正確的值
image(c),truesize,axis off,colormap(gray(247))
‧colormap(gray()),gray()輸入512會變暗,而輸入128會變亮。
3.3 The imshow function
一開始是正常輸出,double()之後輸出的顯示為白色的。但我用的是彩色的圖片,所以並不會完全都是白色的。
‧後面再將轉成double的變數除以255顯示圖片會還,除以 512顏色會偏暗,除以128顏色會偏亮。
P.46,P.47看太不懂。照書本上寫的去做,但是不懂uint8函數的輸出和double()輸出的哪不同?
3.4 Bit Planes
灰階影像按照bit planes分割後,就可以轉換為一系列的二元影像。先將一個灰階影像轉換成double型態的矩陣,然後將cd矩陣除以2的連續次方,就可以分割位元平面,捨去餘數,看最後位元是0或1。如果是較高的位元,輸出的影像跟原本比較類似。取的位元越低時,影像就會越來越模糊。
c0=mod(cd,2);
c7=mod(floor(cd/128),2);
3.5 Spatial Resolution
spatial resolution是整張圖pixel的密度。spatial resolution越大,越多pixel被拿來顯示圖片。
(imresize(imresize(x,1/4),4))
(imresize(imresize(x,1/32),32))
3.6 Quantization and Dithering
Quantization:一張圖的灰階數。大部分的圖片有256灰階。減少灰階數的方法是將灰階數減少至n個。
‧f=floor(double(x)/64); 將256階減少為4階。
‧grayslice(x,n);建立一個值被減少至0,1,...,n-1的矩陣。
‧gray(n);建立一個介於0~1.0有n個間格的color map。
Dithering:減少圖片顏色的處理。顏色數量有限制或印刷都需要Dithering處理。
Dithering for 量化成兩種灰度
1.一個標準比較用單位矩陣D [ 0 128
192 64 ]
2.比較方法:p(i,j)={1 if(x(i,j)>d(i,j))
0 if(x(i,j)<=d(i,j)) } Error Diffusion:原灰階值與量化後的灰階值之間會有一些error。
由Floyd與Steinberg提出的方法:
1. Perform the quantization.
2. quantization error。
3. 擴散error至右邊下方的pixel。
第三章真的很難。
沒有留言:
張貼留言