国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

VB圖像處理,(四)幾個常用濾鏡的實現2

2024-07-21 02:20:57
字體:
來源:轉載
供稿:網友
上一次,我們講了銳化、柔化、擴散、雕刻這幾個濾鏡的算法和實現
請參考《vb圖像處理,(三)幾個常用濾鏡的實現1 》


在這一篇中我將和大家講述鉛筆畫算法和木雕算法和它們的實現。
為什么我要把這兩個算法放在一起說呢,因為這兩個算法是非常相似的。
首先要說一下人的眼睛對于圖像的觀察,人的眼睛對于灰度(亮度)的敏感
要遠遠大于對色彩的敏感,而人的眼睛對于暖色調和冷色調的敏感有要遠大于
對一般色彩的敏感度。
經過大量的測試,人們得到了一個經驗公式,來說明人的眼睛是如何識別亮度的:
gray = red * 0.3 + green * 0.6 + blue * 0.1
而右因為人的眼睛對于綠色的敏感度最大,就有了一個更加近似的公式:
gray = green
請大家再回想一下以前在用鉛筆畫眼睛看到的景色的時候,是如何做的呢?
輪廓,對了,輪廓是什么呢?其實說白了就是灰度的一個跳變。
因此我們只要設定一個閥值,把電腦上的圖片中的像素的色彩轉化為灰度,再把
相鄰的兩個像素的灰度去比較,當灰度變化超過一定的量的時候,我們就判斷它是輪廓。
用鉛筆把它描繪出來。
有了這個思路,我們就很容易把這個算法寫出來了。
public sub pencil(optional byval sensitivity as long = 25)
dim i as long
dim l as long
dim m as long
dim n as long
dim col as long
dim colnext as long
'on error goto errline
if not canput then exit sub
done = false
timefilter = timegettime
for i = 0 to outputwid - 1
m = i + 1
for l = 0 to outputhei - 1
n = l + 1
col = colout(0, i, l) * 3 + colout(1, i, l) * 6 + colout(2, i, l)
col = col / 10 '當前點的灰度哦。
colnext = colout(0, m, n) * 3 + colout(1, m, n) * 6 + colout(2, m, n)
colnext = -colnext / 10 '下一點的灰度哦。
if col + colnext > sensitivity then '判斷灰度變化是否超過設定的閥值
colout(0, i, l) = 0 'rgb(0,0,0)表示黑色
colout(1, i, l) = 0
colout(2, i, l) = 0
else
colout(0, i, l) = 255 'rgb(255,255,255)表示白色
colout(1, i, l) = 255
colout(2, i, l) = 255
end if
next
next
done = true
timefilter = timegettime - timefilter
exit sub
errline:
msgbox err.description
end sub
這里用到的所有全局變量都已經在前幾章中用到,就不再重復說明了。

說到這里,那么木雕的原理就更簡單啦,無非就是判斷該點像素的灰度,如果灰度大于給定的閥值,
就設它為白色,如果該點像素的灰度小于給定的閥值,就設定它為黑色。
那么,這個算法,我就不寫出來了,讓給電腦前的讀者,自己寫一個試試看吧,不會難道你的。
這兩篇講的都是一些很簡單的圖像處理,下一篇講給大家講“灰度直方圖”的概念,大家或許用過
photoshop中的autolevel的功能吧,它可以把一張色彩很“別扭”的圖像轉換為很“舒服”的效果,
那么就需要用到“灰度直方圖”這個工具了,希望大家不要錯過。


對了,前幾章的內容請點一下鏈接:
《vb圖像處理,(一)像素的獲取和輸出 》
《vb圖像處理,(二)二次線性插值的應用》
《vb圖像處理,(三)幾個常用濾鏡的實現1 》


(這里只是說了我自己在寫程序的時候用到的方法,存在很多的不足。并且因為在貼上來的時候作了部分修改,可能會存在部分錯誤,請各位高手不吝賜教,將您用到的更好的方法提供一下,我將不勝感激。)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长治市| 交城县| 吉林省| 民和| 阳原县| 竹北市| 南靖县| 涟水县| 贵南县| 鄂托克前旗| 仲巴县| 五原县| 丹东市| 云南省| 叙永县| 呈贡县| 韶关市| 额尔古纳市| 武山县| 河间市| 霍州市| 陆良县| 墨玉县| 宜兴市| 株洲市| 庆阳市| 太谷县| 三穗县| 桓仁| 定襄县| 林西县| 秦安县| 庆云县| 睢宁县| 湄潭县| 化隆| 石林| 东港市| 西贡区| 阜宁县| 盐山县|