天天看點

數字圖像處理編成入門筆記——第四章圖象的半影調和抖動技術

1.     黑白二值圖:隻由黑點和白點組成,表現出灰色圖象的效果。黑點越多,圖像就暗點,反之,圖像就亮點。

2.     半影調技術:由二值圖象顯示出灰階效果的方法。它的一個主要用途就是在隻有二值輸出的列印機上列印圖象。主要的兩種方法:圖案法和抖動法。

4.1 圖案法

1. 圖案法是指灰階可以用一定比例的黑白點組成的區域表示,進而達到整體圖象的灰階感。黑白點的位置選擇稱為圖案化。

2. 分辨率,機關是dpi(dot per inch),即每英寸點數,點數越多,分辨率就越高,圖象就越清晰。顯示器的尺寸(英寸)是指對角線。

3. 像素點灰階的表示方法(圖案):如果這16×16的方塊中一個黑點也沒有,就可以表示灰階256;有一個黑點,就表示灰階255;依次類推,當都是黑點時,表示灰階0。這樣,16×16的方塊可以表示257級灰階。

4. 圖案的構成:有規則的圖案和随機的圖案。一般情況下,有規則的圖案比随即圖案能夠避免點的叢集,但有時會導緻圖象中有明顯的線條。

5. 标準圖案:一個整數矩陣。例如要表示256級灰階,則其中的每個值從0到255。圖象的實際灰階和陣列中的每個值比較,當該值大于等于灰階時,對應點打一黑點。

6. 設計标準圖案的算法:(由Limb在1969年提出的)

先以一個2×2的矩陣開始:設M1=

數字圖像處理編成入門筆記——第四章圖象的半影調和抖動技術

,通過遞歸關系有Mn+1=

數字圖像處理編成入門筆記——第四章圖象的半影調和抖動技術

,其中Mn和Un均為2n×2n的方陣,Un的所有元素都是1。根據這個算法,可以得到M2=

數字圖像處理編成入門筆記——第四章圖象的半影調和抖動技術

,為16級灰階的标準圖案。

M3(8×8陣)比較特殊,稱為Bayer抖動表。M4是一個16×16的矩陣。

7. 在不改變原圖的大小下,使用利用圖案化技術:設原圖是256級灰階,利用Bayer抖動表,做如下處理:

if (g[y][x]>>2) > bayer[y&7][x&7] then 打一白點 else 打一黑點

其中,x,y代表原圖的象素坐标,g[y][x]代表該點灰階。首先将灰階右移兩位,變成64級,然後将x,y做模8運算,找到Bayer表中的對應點,兩者做比較,根據上面給出的判據做處理。模8運算使得原圖分成了一個個8×8的小塊,每個小塊和8×8的Bayer表相對應。

4.2 抖動法

1. 規則抖動:如上面提到Bayer表算法。優點是算法簡單;缺點是圖案化有時很明顯,這是因為取模運算雖然引入了随機成分,但還是有規律的。

2. Floyd-Steinberg算法:

假設灰階級别的範圍從b(black)到w(white),中間值t為(b+w)/2,對應256級灰階,b=0,w=255,t=127.5。設原圖中象素的灰階為g,誤內插補點為e,則新圖中對應象素的值用如下的方法得到:

if g > t then

打白點

e=g-w

else

打黑點

e=g-b

3/8 × e 加到右邊的象素

3/8 × e 加到下邊的象素

1/4 × e 加到右下方的象素

  但在這個算法中,因為e有可能是負數,為了防止得到的值超出char能表示的範圍,我們使用了一個int類型的緩沖區存儲新值。

  要注意的是,誤差傳播有時會引起流水效應,即誤差不斷向下,向右累加傳播。解決的辦法是:奇數行從左到右傳播,偶數行從右到左傳播。

4.3 将bmp檔案轉換為txt檔案

1. 原理:首先将位圖分成同樣大小的小塊,求出每一塊灰階的平均值,然後和每個字元的灰階做比較,找出最接近的那個字元,來代表這一小塊圖象。

2. 字元灰階的确定方法:打開記事本(notepad),輸入字元“1”,標明該字元,使其反色。按Alt+PrintScreen鍵拷貝視窗螢幕。打開畫筆(paintbrush),粘貼;然後把圖放到最大(×8),打開“檢視”→“縮放” →“顯示網格”菜單。每個字元的面積是8×16(寬×高),是以一個字元的灰階值可以用如下的公式計算(1-所占的黑點數/(8×16))×255。

   在努力,就是向成功一點點邁進!加油~~~

繼續閱讀