1. 黑白二值圖:只由黑點和白點組成,表現出灰色圖象的效果。黑點越多,圖像就暗點,反之,圖像就亮點。
2. 半影調技術:由二值圖象顯示出灰度效果的方法。它的一個主要用途就是在只有二值輸出的打印機上打印圖象。主要的兩種方法:圖案法和抖動法。
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表相對應。
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類型的緩衝區存儲新值。
要注意的是,誤差傳播有時會引起流水效應,即誤差不斷向下,向右累加傳播。解決的辦法是:奇數行從左到右傳播,偶數行從右到左傳播。
1. 原理:首先將位圖分成同樣大小的小塊,求出每一塊灰度的平均值,然後和每個字符的灰度做比較,找出最接近的那個字符,來代表這一小塊圖象。
2. 字符灰度的確定方法:打開記事本(notepad),輸入字符“1”,選定該字符,使其反色。按Alt+PrintScreen鍵拷貝窗口屏幕。打開畫筆(paintbrush),粘貼;然後把圖放到最大(×8),打開“查看”→“縮放” →“顯示網格”菜單。每個字符的面積是8×16(寬×高),所以一個字符的灰度值可以用如下的公式計算(1-所佔的黑點數/(8×16))×255。
在努力,就是向成功一點點邁進!加油~~~