顯示具有 2009hw5 標籤的文章。 顯示所有文章
顯示具有 2009hw5 標籤的文章。 顯示所有文章

2010年1月20日 星期三

HW05_new

位元平面切片


位元平面切片原理介紹:
顏色是由8個位元儲存.所以我們可將其影像分成8個區塊重疊,這次的作業就是要分別顯現出這8張圖像,例如:假使我這一個像素點的顏色是0101 0010 (binary) ,我們可以分成8個像素點的組合而成.








  0000 0000   (第1張的像素點值)
   0000 0010   (第2張的像素點值)
   0000 0000   (第3張的像素點值)
   0000 0000       "
   0001 0000       "
   0000 0000       "
   0100 0000   








   0000 0000   (第8張的像素點值)
再*255來分辨是黑色還是白色如果值為"1"那就設為黑色如果不是"1"的話就設為白色








第1位元切面圖
















第2位元切面圖
















第3位元切面圖
















第4位元切面圖
















第5位元切面圖
















第6位元切面圖
















第7位元切面圖
















第8位元切面圖

















心得:
 一張圖片讀取之後,利用(and)運算.把2進制轉換成16進制0000 0001(2)=0x01 .就可以完成作業了,這次作業 我也把程式碼重新解讀了一次,讓自己更了解當初不太懂的地方~ 重新做了一次,希望老師可以加點分~

2010年1月19日 星期二

Hw5

作業5:位元平面切片

一開始還不知道什麼是位元平面切片

看完課本上的解釋和圖片之後

才有比較了解

一張256準位的灰階圖片

是由8個一位元的平面所構成

其中較低位元的平面提供影像中較精細的強度細節部分

而較高位元的平面則包含視覺上的重要資料

全部合起來就是一張圖片了





這次的作業 我還不太會寫

是靠同學的幫忙才完成的...

真的很感激 ...!

2010年1月18日 星期一

HW05

這次的作業位元平面切片,怎麼看都沒感覺....也有上網去找資料,可是我怎麼找,
就只有這張圖↓,都沒有更深入的內容









這張圖就是在講位元平面切片,Bit 0~Bit 7的意義,Bit 1的意義最少,Bit 8的意義最多
我在猜Bit 數越大,就代表它和原圖越接近;Bit 數越小,就代表它和原圖差越多
位元平面切片似乎還牽扯到資訊隱藏的部分,好像是利用Bit 數小的來做資訊隱藏,並且不會破壞原圖

8bit的像素點顏色和
0000 0001
0000 0010
0000 0100
0000 1000
0001 0000
0010 0000
0100 0000
1000 0000
分別做"&"運算就可以做到位元平面切片
當然程式的部分要轉成16進制才能執行囉
以下是實作

↓我是原圖









↓1-Bit








↓2-Bit








↓3-Bit








↓4-Bit








↓5-Bit








↓6-Bit








↓7-Bit








↓8-Bit










最後要老實說,這次的作業是借用同學的程式碼來研讀的
程式碼看完就大概知道切平面的做法,切平面的數學公式並不難理解
但是切完之後,為什麼1-Bit和8-Bit的差異這麼大
照最上面那張圖片給我的感覺,應該是把像素點色彩值平均切成8份
結果上網查了之後,發現有所謂的重要程度,我想這就是8-Bit這麼接近原圖的原因吧

2010年1月17日 星期日

HW5











作業:位元平面切片

圖片的儲存單位是像素,那像素又是由位元組成的數字單位

這次的作業是把一個位元組所構成的圖片拆成一個一個位元,然後把它分成數個圖片,

正常來說,應該是用一個由八位元所組成的圖片來作範例,

不過之前的作業也都是用這一張圖片來展示,

所以這次還是使用這張圖片,

所以切出來不會像是使用八位元的圖片來的明顯。

在程式中是把圖片拆成八個位元來顯示

不過理論是懂了,但是在程式實作方面還是參考同學寫出來的東西,

因為實在想不通如何把圖片轉成位元像素再轉乘二進制在做強度轉換。

可能是因為那堂課有是沒聽到老師怎麼解釋八,

書上也說得很簡單,把原理說完而已。

HW5



這次的作業是利用一張由像素夠成的圖片
每個像素由8位元組成
所以一張影像等於8張重疊的影像
每向左一位元做AND運算再*255分變黑白
就可把影像轉成下列結果
1-bit




2-bit



3-bit





4-bit


5-bit



6-bit




7-bit




8-bit



一開始我放的圖片顏色不多


所以做出來的結果很不明顯
後來換了一張較多色彩的圖片後


每一張顯示出來的結果都很明顯


我覺得這個作業很有趣也很有效果



HW5



這個作業還挺難的
因為截止日快到了所以先上傳上來
其實程式部分不是很懂
靠同學的幫忙才能完成這份作業
真的是很感激...
這個寒假無聊的時候會想把程式碼拿來研究一番.

HW05

位元平面一開始作起來就是困難重重

讓我很摸不著頭緒

其中一行( 以第8個button為例)

Pixels[j][i]=((bit8>>7)&0x1)?clWhite:clBlack;

關於這行同學的指點後,其實當下還沒有完全瞭解

幾經思索和上網找資料後才明白這行的意思

原來是要利用上面位移和比對一起作 "^"

當作下一張圖的位元分析,就把像素值和以下

00000001
00000010
00000100
.
.
.
10000000



運算方式
10010101 (像素)
X 00000001 (比對值一)
------------------------------------
00000001 (依序一一比對下去)



這八個bit作比對

還有要讓程式判斷顏色後產生黑白即-----> clWhite:clBlack

也就是控制黑色與白色的調色盤





而且跟同學討論時有個問題我們一開始一直沒有注意到以至於沒有任何東西Run出來

就是AutoSize的開關為 true時有時候會有連自己都無法解釋的錯誤出現

果然一改結果就可以出來了

以下就是執行出來的畫面


原圖:





1-bit





2-bit





3-bit






4-bit






5-bit






6-bit






7-bit






8-bit


HW5


位元平面


因為要取出顏色的各個(1~8)位元的數值,我嘗試了好久才試出不用去做麻煩的二值轉換跟轉16進制問題。

這個方法就是pow(((r>>0~7)&1)+1,8)-1 只要這樣就可任意切某位元的值出來再去做運算,如此一來可以省下很多轉換來轉換去的問題。這程式碼的運作方法為如果說r=255來說,轉成二進制就是11111111,如果要取最高位元,就把它>>7,就變成00000001,然後&1就是把00000001,給取出,之後做+1再做八次方運算就得到了256,但是因為超過了255所以必須減一,其餘的位元就依此類推,則可取得8個位元。

HW5

位元平面切片??
ㄧ開始根本不知道這是要做什麼
後來一問之下
才知道是要將一個由像素構成的八位元圖片做位元切面
然後將這八個位元每次都往左移一個位元
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
就像這樣
把像素與切面值做and運算
再*255來分辨是黑色還是白色
如果值為"1"那就設為黑色
如果不是"1"的話就設為白色
以下是執行的結果

































































































我覺得這作業很有趣
看到一張圖用一個程式就可以顯示出那麼多結果
真的還蠻酷的
這次的作業大致上沒遇到什麼困難
都還蠻順利的