2009年12月13日 星期日

HW5 8 bit-plane slicing

這次作業是將一張儲存8bits的灰階影像將其位元分別取出作位元平面切片各別顯示 過程共用了三種方式將bit數取出 最早用"shift operator"方式<<(left shift) >>(right shift) 一直出現影像呈黑黑的一片 原來BCB在shift operator過程中需要一個暫存的變數存下 shift後的值 不能用if else直接判斷 也不可以把指令寫在一起如: bTemp = (bTemp <<1)>> 7; 或: bTemp <<= 1; bTemp >>= 7; 一定要分開寫成: bTemp = bTemp <<1; btemp = bTemp >> 7;
暫存變數是比較沒有爭議 但指令一定要方開寫這就讓我很疑惑的地方?
後來又試了用"乘除"讓bit數改變 也是碰到一樣的情形 也是一定要指令分開寫 最後最沒有爭議的方式就是用"mask遮罩"方式直接作and運算判斷是否等於-128- -64- -32- -16- -8- -4- -2- -1- 以下是我程式執行的畫面 為了看圖方便我用SavePictureDialog將檔案存成8張圖案以便觀察

程式執行結果 ex:7th bit-plane

原圖

第八位元平面

第七位元平面

第六位元平面

第五位元平面

第四位元平面

第三位元平面

第二位元平面

第一位元平面

1 則留言:

  1. 你好

    請教一下

    你這些圖片是從哪裡抓的呢

    因為跟課本上面的一模一樣

    我還滿需要抓下來做一下比對

    謝謝

    回覆刪除