[轉貼] 誤差擴散的原理 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
誤差擴散的原理誤差擴散法在數據處理中經常碰到, 尤其是用于圖象處理中, 降低色彩的深度. 下面三張圖, 圖1 是 256 級灰度過度, 圖 2 是簡單的將圖一按就近原則, 轉換成了 16 級灰度. (直接把 8bit 灰度的后 4bit 砍掉) 圖3 是將圖 1 用誤差擴散的方法轉換成 16 級灰度. 圖一. 圖二. 圖三. 很明顯, 同是 16 色, 但是圖三的效果明顯好于圖二. 其原因是使用的誤差擴散算法. 顧名思義, 誤差擴散, 就是將色彩深度降低時, 將像素顏色的變化誤差, 擴散開去. 這使得肉眼在觀察圖片的時候, 相鄰的像素點集合整體 的誤差變小. 下面舉一例來說明要容易理解的多: 在原256 級灰度圖象上有一個點, 灰度值是 120 (0~255), 如果我們要將這張圖轉換成 16 級灰度, 最簡單的方法是將每個像素點除以 16. 那麼轉換后的值就是 120/16=7.5 保留整數位后就是 7 . 這樣轉換后的值就有了 0.5 的誤差. 最簡單的誤差擴散方法是將這 0.5 的誤差放到這個點右邊/下邊的點上, 我們可以按 3:2:3 的比例把它分配到右邊, 右下, 下邊的點上. 即, 我們把右邊和下邊的點加上 (0.5*16)*3/8=3, 把右下的點加上 (0.5*16)*2/8=2. 這樣處理完整個圖形, 要比直接截尾的效果要好的多. 實際上, 3:2:3 的誤差分配方案 並不算好. 你還可以試試 7:3:5:1 的分法:X 7 3 5 1 或者 42 分: X 8 4 2 4 8 4 2 1 2 4 2 1當然也不一定複雜的 Filter 就一定效果更好, 還是要視圖象而定. 我覺得這個方法很容易理解, 就不多寫了, 可以將其很容易的擴展到彩色圖象的處理. (只需要將顏色分成 R G B 三色素) 另外, 不光是圖象處理, 這個算法在別的一些數據處理中也常用到. 時間就是金錢---[ 發問前請先找找舊文章] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |