對視頻進行圖片處呢
圖像處理
在我的程序中圖像處理函數是作為 DirectShow 封裝類一部分的,我認為這樣便于移動和使用。沒有連著上面的 DirectShow 類而另外寫標題是因為我覺得有必要把它提到重要位置。在程序完善階段您的工作基本就在這里了,除了花心思構造D3D環境外幾乎所有效果都要在這里實現,水平高下也體現于此。
在上可以找到很多圖像特效的代碼和解說,我結合編程過程再說說。
1. 訪問緩沖區的麻煩。
這是最麻煩的,二維圖像在這里以一個連續的一維緩沖區呈現,您要靠一個指針去訪問它,怎么辦呢?先弄懂 Pitch,例如 32bit ARGB 圖像,每個象素就占用 4 Byte 內存空間(1 Byte = 8 bit),對于寬度為 20 像素的圖像,它的 Pitch 就是 80 Byte,即每一行占用的內存。按 x 、y 坐標就有如下公式(按 Byte 計算):
B:y * Pitch + x * 4
G:y * Pitch + x * 4 + 1
R:y * Pitch + x * 4 + 2
A:y * Pitch + x * 4 + 3
可以看出在內存中是按 BGRA 存儲的,我不明白為什么這樣,可能可以從計算機的內存存儲方式找到答案。上述公式計算多,效率較低,在實際使用中應適時作有益的改變。
2. 浮雕。
到目前為止我在上找到的幾篇文章都說把一點的值減去其右下角點的值再加上128就行了。為什么要減去右下角的點呢?為什么要加上128呢?原來浮雕是要把圖像的變化部分突出顯示出來,而把相同部分淡化,所以用一點減去其鄰域任意點都可以達到這個目的,倒也不一定是右下角的點,包圍著它的八個點都可以,甚至可以選擇減去更遠的點,只要規則明確、效果好就行。在相減后點的 RGB 值都減小了,大多接近黑色,黑乎乎一片的看不出什么來,一點也不像浮雕,所以要給它們都增加一個相同的亮度,通常加上128,其它的值,例如64、100,當然也行,一切都以實際效果為準。說到效果,上面所說的RGB相減會造成浮雕有一些色點,解決方法是計算兩點的亮度之差,RGB都賦值為亮度差,畫面就沒色點了,因為已經變成灰度圖了。亮度公式是 Brightness = 0.3 * R + 0.6 * G + 0.1 * B,其中G 的比重最大,可以近似的用 G 作為亮度,在RGB各自的分量圖中也可以明顯看出 G 分量的圖最亮,簡單的把 G 的值賦給 R 和 B 就得到灰度圖了,這可以減少計算,提高速度。后來我還看到這樣的話句,\"用3 * 3 的小塊做的浮雕效果更好\",不過我不知道怎么用,可能這樣就可以實現 PhotoShop 那樣更好的浮雕效果。
原理是這樣了,到了編程卻是另外一回事:能夠把規則、數學公式轉換為程序也是能力的一種體現。如果要減去右下角的點,那么最右一列和最后一行是要特殊處理的,否則肯定會發生內存訪問錯誤,想一想就知道為什么;如果要減去左邊的點,第一列也要特殊處理,請問第一列的點到哪里找它左邊的點呢?不要小視此問題,它會令你訪問內存時遇到一些問題。
那些被認為是標普指數表現最差的相關因子 3. 鉛筆畫
鉛筆畫原理和浮雕差不多,也是亮度相減,認為變化大的是邊緣,然后設置一個閥值,例如差值大于8,則把該點設為黑色(0,0,0),要不設為白色(255,255,255)。閥值、色彩都可任意設置,沒人要您拘束就不要忸忸怩怩的不敢改動。
按照此方法得到的效果實在不怎么樣,可惜我不是研究圖像的料,對數據的處理能力很差,同樣一幅在專家手中可以玩出很多花樣的圖片,淪落到我手上也只能飲恨屈膝投降無奈了。這是我看了一些圖像處理方面資料和書籍所發的呆嘆,圖像處理實在太精深了,既要數學、物理知識雄厚,又要腦子靈活能東移西就把各種知識綜合運用,不然就只好望洋興嘆。
4. 加亮、對比度等
首先悲痛的說明,我曾努力的要實現色度、飽和度的調整,知道是要把 RGB 轉換成 HLS 之類的顏色空間才能實現,也找到了一些它們之間轉換的說明和轉換函數,可惜看不明白,或者說那些材料根本不打算讓我明白!這不單是氣話,而且事實,我真的十分氣憤:怎么能夠在前面鋪了一大堆\"效果圖\"說了一大堆廢話然后給個只有幾行無大用的注釋的代碼就可以呢?!盡管如此憤概,我還是乖乖的抄了程序,希冀能發揮作用,結果卻是失望:不僅效率低下,而且在調整了飽和度的同時使圖像出現不協調的彩色方塊。由于不知道原理,無法改動,于是我放棄了它。
調整亮度很簡單,例如要加亮 10,把 RGB 都加上 10 就可以了,減亮就減10。
對比度調整也不難,書上說是要令亮點更亮、暗點更暗,好像是要找出亮點來增亮、找出暗點加暗,其實不然,把所有點都乘以一個數,把亮暗點的差距拉大或減小就能調整對比度了。把圖像原來的對比度定為 1,要增大對比度就調整為 1.3 、2 等大于1 的數,把每個點的 RGB 都乘以它,就行了,要降低就把數值設為 0 至 1 的數。只要注意保持 RGB 的值在 0 ~ 255 中即可。
上海治療婦科醫院昆明治療早泄哪家好
小孩子厭食不吃飯怎么辦
- 庫爾勒市第十二中學:跨學科融為一體課 有“新”更有“心”
- 研究者終于知道土星現在幾點了
- 甜到心里的情話,浪漫深為,哪一句最撩心
- “奶奶作家”楊本芬:寫出女性“不被看見”的生平
- 身邊有這3種行為的人,一定要深交,不僅不吃虧還會越遠混越遠好!
- 兩只小男孩的錯位狗生
- 百年老店“狗不理”,曾經都想吃,如今卻都不買?粉絲:自食其果
- 把痱子當濕疹護理,寶寶脖子不忍觸摸!還認不清的,我求你看看吧
- 冰城限招120人,政府扶持,不限專業,在崗工作也可正常跟進,6月15日報名累計!
- 112-97!布里奇斯31分,保羅22+11!太陽勝鵜鶘贏下飛龍山!
- 上交所:嚴控違規交易,對永吉轉債、退市西水、*ST實達等證券市場進行重點監控
- 牛奶越貴越好嗎?牢記3個信息,才是真正純牛奶,營養高,可口好