最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

圖像處理初級技巧(哲學)

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 16:03:05
文檔

圖像處理初級技巧(哲學)

圖像處理初級技巧(哲學):這里只介紹初級技巧,并且多數(shù)只是一些提示,不包含代碼和一些概念的詳細說明。 技巧一:雙緩沖消除閃爍。 很多初學者認為閃爍產(chǎn)生的原因是刷新速度太慢,這是個完全錯誤的認識。 閃爍產(chǎn)生的原因是相鄰的兩幀或多幀之間,圖像內(nèi)容的差異過大。在實際編程中,
推薦度:
導讀圖像處理初級技巧(哲學):這里只介紹初級技巧,并且多數(shù)只是一些提示,不包含代碼和一些概念的詳細說明。 技巧一:雙緩沖消除閃爍。 很多初學者認為閃爍產(chǎn)生的原因是刷新速度太慢,這是個完全錯誤的認識。 閃爍產(chǎn)生的原因是相鄰的兩幀或多幀之間,圖像內(nèi)容的差異過大。在實際編程中,

這里只介紹初級技巧,并且多數(shù)只是一些提示,不包含代碼和一些概念的詳細說明。 技巧一:雙緩沖消除閃爍。 很多初學者認為閃爍產(chǎn)生的原因是刷新速度太慢,這是個完全錯誤的認識。 閃爍產(chǎn)生的原因是相鄰的兩幀或多幀之間,圖像內(nèi)容的差異過大。在實際編程中,

這里只介紹初級技巧,并且多數(shù)只是一些提示,不包含代碼和一些概念的詳細說明。

技巧一:雙緩沖消除閃爍。

很多初學者認為閃爍產(chǎn)生的原因是刷新速度太慢,這是個完全錯誤的認識。
閃爍產(chǎn)生的原因是相鄰的兩幀或多幀之間,圖像內(nèi)容的差異過大。在實際編程中,這個差異的來源主要有三個:
1,windows自身對程序窗口背景的擦除,導致兩幀之間插入空白幀。這個可以通過處理OnEraseBkgnd或者類似的地方來解決。
2,程序自身清除背景。這個就是雙緩沖要取代的。
3,繪制過程表現(xiàn)。由于沒有使用雙緩沖,繪圖的整個過程會重現(xiàn)在屏幕上,這種過程的重現(xiàn)會引起閃爍。

雙緩沖技術的實質是:在后臺緩沖繪制下一幀要顯示的圖形,繪制完成后切換到前臺顯示。由于前臺顯示的是上一次繪制的結果,對于連續(xù)運動的圖像來說,兩幀之間的差異很小,人感覺起來就是平滑的變化了。
這一技術的實現(xiàn),請參考游戲開發(fā)和圖像處理的書籍和資料。

技巧二:數(shù)據(jù)與顯示分離。

這個技巧常見于圖像處理程序,例如繪圖軟件等。
絕大多數(shù)初學者的第一個圖像處理程序,把繪制好的圖像保存為文件的過程,都是直接從DC中獲取數(shù)據(jù),然后轉為BMP或者其他格式的。
這種方式對于一個簡單的demo或者不做商業(yè)用途的小程序來說,是完全可以的。而一旦圖像處理需要涉及一些復雜的算法,例如alpha融合,模糊,銳化等,這種方式就無法滿足要求了。
正確的做法是:定義自己的圖像數(shù)據(jù)格式(一般認為24bitBMP的格式就是很優(yōu)秀的格式了,也能滿足多數(shù)情況的需要),然后制定自定義格式到DC等設備的映射規(guī)則。所有的數(shù)據(jù)運算都在自己的數(shù)據(jù)結構內(nèi)部完成,而結果經(jīng)過映射后,顯示在給定的設備上。
之所以不用DC,有四個主要原因:
1,DC是易變的。同一程序的不同部分,都擁有對DC的修改權限,甚至其他程序也會修改你程序的DC資源。
2,DC的精度是受限的。對于一個特定的圖像處理算法,可能會引起數(shù)據(jù)的丟失或上溢,多次處理的結果會導致圖像的色彩和形狀完全失真。為了解決這個問題,包括photoshop在內(nèi)的許多圖像處理軟件都提供了諸如48bit等高精度圖形格式。
3,DC的尺寸是受限的。你可能想處理一個長寬都很大(例如,長寬都超過10k象素)的圖像,但是DC的尺寸有它自己的限制,有些情況無法滿足要求。
4,DC是設備相關的,在不同的桌面分辨率設置下的表現(xiàn)是不一致的。這個不用多說,256色/16位色/24位色/32位色下,截取同一DC內(nèi)容得到的結果可能是不同的。你總不能要求使用你軟件的用戶必須使用你用的桌面設置吧?

這一技巧更重要的用途是在矢量圖的繪制,矢量圖一般使用浮點類型的數(shù)據(jù)保存圖形細節(jié)信息,而以象素坐標為單位的屏幕DC對此無能為力。

技巧三:恰當?shù)腢NDO方式。

多數(shù)圖像算法是不可逆的,例如模糊,為了能夠undo每一步的操作,相當多的時候只能把處理前的圖片保存一個備份,undo的時候直接恢復。
事實上,由于用戶的操作可能非常復雜,那么這種備份的數(shù)量極有可能超過磁盤剩余空間。其實有個優(yōu)化的方式:
原理:用戶的操作雖然不能被有效undo,但是卻可以被重現(xiàn)。
使用:保存原始的圖片,記錄每一步用戶操作的細節(jié),當需要undo到某一步的時候,從原始圖片開始,依次重現(xiàn)用戶的操作細節(jié),直到需要的那個步驟。

這一技巧還可以通過在一些重現(xiàn)時間過長的復雜操作前后增加備份次數(shù)以改善性能??偟膩碚f這是個時間換磁盤空間的技巧,多數(shù)時候也能加快程序的響應速度(畢竟內(nèi)存計算比讀取磁盤快不是一點半點)。

技巧四:必要的時候,匯編。

圖像處理多數(shù)是耗時運算,即使1024×1024的bmp,總數(shù)據(jù)量也超過3M,對于一個需要逐象素處理的算法來說,這種數(shù)據(jù)量會占據(jù)大量的CPU時間。
為了改善這種狀況,除了改進算法本身外,唯一的方法恐怕就是利用匯編了,可以通過MMX,SSE等特殊指令加快處理速度,多數(shù)情況,經(jīng)過匯編優(yōu)化的算法會比原始算法快2~3倍。
但是,你也必須保留原始的算法版本以支持不具備那些特有指令的CPU(例如Intel的CPU就不支持3DNow指令),并驗證匯編的正確性。

技巧五:多線程和空閑時間利用。

為了在處理圖像的同時,及時響應用戶的操作,多線程一般而言在所難免,除了多線程本身的復雜性,這里需要提醒:在只有單個CPU的機器上,多線程只會降低你的運行速度而不是加快,如果你的處理不是那么耗時,或者用戶界面響應不是那么重要,請慎重考慮為程序付出多線程的代價是否值得。

無論是游戲,還是圖像處理程序,總是或多或少有些空閑時間,例如用戶停止操作等等,程序可以選擇使用這段時間來做一些后臺處理的工作,例如把緩沖中的數(shù)據(jù)寫入磁盤等。

技巧六:有計劃的內(nèi)存管理。

圖像處理程序耗盡系統(tǒng)可用內(nèi)存,這并不是什么新鮮事,再優(yōu)秀的內(nèi)存管理也不能處理內(nèi)存需求超過供給的情況。這里有個致命問題,就是當用戶的某個操作需要分配大量內(nèi)存,而系統(tǒng)此時又無法滿足的時候,你的程序可能連保存當前編輯狀態(tài)的內(nèi)存都拿不出來了。

為了避免這種情況,內(nèi)存使用上要有一個有效的預算和反饋機制,事先預測可能發(fā)生的狀況做好恢復準備,而不是等到系統(tǒng)內(nèi)存告急的時候手忙腳亂。

與此同時,一些常用文件和數(shù)據(jù)的緩沖是提高效率的途徑,也是內(nèi)存缺乏時可以暫時釋放的資源。

技巧七:看懂以上的所有技巧,如果你不能,那么你還沒有為你所涉足的這個領域做好最基本的準備。

參考:http://blog.okbase.net/PanicNet/archive/3017.html

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

圖像處理初級技巧(哲學)

圖像處理初級技巧(哲學):這里只介紹初級技巧,并且多數(shù)只是一些提示,不包含代碼和一些概念的詳細說明。 技巧一:雙緩沖消除閃爍。 很多初學者認為閃爍產(chǎn)生的原因是刷新速度太慢,這是個完全錯誤的認識。 閃爍產(chǎn)生的原因是相鄰的兩幀或多幀之間,圖像內(nèi)容的差異過大。在實際編程中,
推薦度:
標簽: 技巧 介紹 圖像
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top