2008年10月23日 星期四

Chapter3

  由於上次上課有點心不在焉,沒仔細聽老師的導讀,導致自己閱讀起來有點困難Orz

  imread這功能已經知道是讀檔的功能了,接著是這章節新講到的一個新指令,image

  image,是matlab一個最基本最簡單最陽春的圖片顯示指令,使用起來感覺不是很方便,如果單用image這指令,結果會如右圖(原圖使用灰階),雖然有軸線,但圖片不僅變形,還變成奇怪的顏色囧"。如果想要正常顯示,必需搭配其他指令。


  首先先用size(unique(d)),d為我儲存圖片的變數,查出圖片的灰階共多少層(→我是指level),如果我們想要用imread完整的顯示原圖,就需要使用colormap這指令,並且知道原圖的level共多少,另外還要搭配truesize(顧名思義就是實際大小啦)這個指令。而axis off這個我認為就是看個人啦,需要軸線就不必要打出來,要隱藏那就把它off掉吧!打出指令>> image(d),truesize,axis off,colormap(gray(255))後就像這樣↓
  另外,如果將colormap裡的數值改的比原本高或低,那麼圖片就會變深或變亮,我想應該就是因為level疊越多代表越多色,所以才會有深淺的差別。而如果要顯示一般有顏色的圖片,那麼就是不要打colormap在後面了,不然就是輸入另一組指令:

      >> [x,map]=imread('Banner.png');
      
>> image(x),truesize,axis off,colormap(map)

由matlab來幫你記colormap。


  3.3我就有點問題了,我不太懂double在做什麼,依我用我的灰階圖片經指令過後看來,會顯示出我原圖描黑線的部份地方。



  而在imshow(cd/n),cd為double過的圖片參數,n為數字,如果比原圖level值大則原圖片加深,少則變淡。


  有一個我覺得很特別的,>> dl=d>120;,d為我的灰階圖片變數,顯示圖片後會很明顯分為兩種顏色,顯示出圖片的主要輪廓,稱為Binary Images,而dl的class會為logical。

如果再>>dl=+dl,就會將logical改掉,不過我不懂
1.為什麼課本是變成uint8,而我的變成double了?
2.且我的圖再次顯示後,並沒有像FIGURE3.3(b)那般,跟原本顯示Binary Images時是一樣的(就我視覺上看起來)?
3.>> imshow(logical(dl))和>> imshow(double(dl)) 的結果都一樣沒變?


3.4 的部份我看不是很懂文章內容(果然上課不該發恍啊囧""),但有試作了一下:

>> cd=double(d);
>> d0=mod(cd,2);
>> d1=mod(floor(cd/2),2);
>> d2=mod(floor(cd/4),2);
>> d3=mod(floor(cd/8),2);
>> d4=mod(floor(cd/16),2);
>> d5=mod(floor(cd/32),2);
>> d6=mod(floor(cd/64),2);
>> d7=mod(floor(cd/128),2);

圖片從不明顯的輪廓漸漸變成清楚分明的輪廓,而d7的圖跟Binary Images的結果看起來是一樣的。
p.49底下也是看不懂 (炸)

3.5 第一個新指令,imresize(x,n),看名字就知道是更改圖片的大小嘍!x是圖片的變數,n是你要縮放的倍率,如果要讓長寬變一半,那麼在n的地方輸入1/2即可。由於縮小的時候是在一定範圍內(看你訂的縮小倍率)截取一點,做縮小的動作;而放大的時候是讓原本圖的陣列擴張,所以會導致糊邊。so如果你同時對一張圖片縮小1/2又放大了2倍並不會讓圖片變回原樣,反而會變的有點模糊喔!
不過為什麼課本p.51 & p.52圖片比較偏馬賽克化而我的圖是模糊化呢?

3.6 這部份我真的算是完全不瞭解了,因為我的matlab輸入imshow(grayslice(x,128),gray(128))等那個表格裡的指令,看起來是完全相同的,而單看grayslice(x,4)這指令出來的圖,從灰階變成鮮豔到很可怕的圖囧"


到最後,我一直在想是不是我的灰階圖有問題呢??? 一堆看起來跟課本上不同的結果。

沒有留言:

張貼留言