高性能图像放大算法——hqx算法
生活随笔
收集整理的這篇文章主要介紹了
高性能图像放大算法——hqx算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 介紹
hqx(“hq” 代表 “high quality”;“x” 代表放大倍數)算法準確來說是hqnx算法,
是Maxim Stepin開發的Pixel-art scaling algorithms算法之一。hqx有三個濾波器:hq2x、hq3x和hq4x,其放大倍數分別為2、3和4。
先來看下使用最鄰近插值算法得到的放大結果:
然后再看看使用hq3x算法進行放大之后得到的結果:
可以看到圖像的鋸齒情況有了很明顯的改善。
2. 算法思想
首先,將源像素周圍的8個像素中的每個像素的顏色與源像素的顏色進行比較。通過根據閾值檢查顏色相似的像素來檢測形狀。這就給出了28=2562^8=25628=256種相似或不同鄰居的組合。為了將單個像素擴展為2×2、3×3或4×4像素塊,在包含必要插值模式的預定義表中查找鄰域排列。
- 1) 第一步:是對源像素的3x3區域進行分析。首先,我們計算中心像素與其8個最近鄰之間的色差。然后將這種差異與預定義的閾值進行比較,并將這些像素分為兩類:“關閉”和“遠”顏色。有8個鄰居,所以我們得到256個可能的組合。
- 2)下一步:是過濾,使用包含256個條目的查找表,每個近鄰/遠距離有色鄰居組合一個條目。每個條目描述如何混合3x3區域的源像素的顏色,以獲得濾波圖像的內插像素。
- 3)目前的實現是利用YUV顏色空間來計算色差,對Y(亮度)分量具有更大的容限,然后對顏色分量U和V進行顏色空間轉換,如果源圖像的格式為每像素16位,則使用簡單的查找表即可實現顏色空間轉換。還可以使用MMX指令計算色差并將它們與閾值進行比較。
- 4)創建查找表是最困難的部分是:對于每個組合,必須確定區域的最可能的矢量表示,在圖像的不同顏色區域之間的邊緣的想法被保留,邊緣方向接近于正確的一個PO。斯泰爾然后使用反走樣將該矢量表示以更高的(3x)分辨率光柵化,并且結果被存儲在查找表中
- 5)過濾器不是為照片設計的,而是為清晰的邊緣圖像設計的,比如線條圖形或卡通精靈。它還被設計成足夠快,可以實時處理256x256圖像。
3. 實現
由于它的代碼比較長,這里就不直接貼出來了,可以去我的資源頁查找下載,后續審核通過會貼出鏈接。
2020.12.14更新:
由于原來的demo在CSDN沒有審核通過,需要demo的請私信并留下郵箱地址,或者參考下面的資源:
2018.6.4更新:
工程代碼demo下載地址:鏈接
總結
以上是生活随笔為你收集整理的高性能图像放大算法——hqx算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学习笔记】斯坦福SCI写作课 Unit
- 下一篇: Java的class是什么意思?