在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

三種圖像插值方式對比

新機器視覺 ? 來源:簡書-梧桐光影 ? 2023-06-01 17:16 ? 次閱讀

在播放視頻時,常遇到視頻尺寸與畫布尺寸不一致的情況。為了讓視頻按比例填充畫布,需要對視頻中的每一幀圖像做縮放處理。

縮放就是在原圖的基礎上做插值計算,從而增加或減少像素點的數量。常見的插值方式有最近點插值,線性插值,蘭索斯插值

下面簡要介紹,并對比三種插值方式的結果。

最近點插值

在一維空間中,最近點插值就相當于四舍五入取整。在二維圖像中,像素點的坐標都是整數,該方法就是選取離目標點最近的點。計算方式如下:

假設原圖為A[aw,ah],寬度為aw,高度為ah。目標圖為B[bw,bh],寬度為bw,高度為bh。已知A[aw,ah]的寬度,高度及其中每個點的顏色值,B[bw,bh]中每個點像素值的計算方式如下:

for(int i=0; i

最近點插值

線性插值

線性插值是以距離為權重的一種插值方式。在一維空間中,假設有點A,B,其距離為LAB。A,B之間任意一點C的值為A*LBC/LAB+B*LAC/LAB。在二維空間中,需要在兩個方向上做插值。如下圖所示:

6483caf8-eca5-11ed-90ce-dac502259ad0.jpg

線性插值

已知Q11,Q21,Q12,Q22,計算P點的值時,需要先由Q11和Q21插值得到R1,由Q12和Q22插值得到R2,再由R1和R2插值得到P。

該方法生成的圖像比較平滑。

線性插值

蘭索斯插值(lanczos)

一維的線性插值,是在目標點的左邊和右邊各取一個點做插值,這兩個點的權重是由線性函數計算得到。而一維的蘭索斯插值是在目標點的左邊和右邊各取四個點做插值,這八個點的權重是由高階函數計算得到

二維的蘭索斯插值在x,y方向分別對相鄰的八個點進行插值,也就是計算加權和,所以它是一個8x8的描述子。

網上目前可找到蘭索斯算法有兩份:GPUImage和OpenCV。其中GPUImage中是用GLSL實現,其算法有誤,并不能得到正確的結果。OpenCV中是用C++實現的CPU端代碼。


我參考OpenCV中的實現方式,實現了一份GPU上的蘭索斯插值算法,該算法在GPU上運行,并不額外消耗CPU資源。其對應的GLSL為

uniform int ssize;
uniform int tsize;
uniform int flag;
uniform float scale;
uniform sampler2D inputImageTexture;
void interpolateLanczos4(in float fx, inout float rate[8]) {
    const float s45 = 0.70710678118654752440084436210485;
    const float PI = 3.1415926535897932384626433832795;
    float cs[] = float[16]( ,1.0, 0.0, -s45, -s45, 0.0, 1.0, s45, -s45, -1.0, 0.0, s45, s45, 0.0, -1.0, -s45, s45);
    if( fx < 0.0000000001 ) {
        for( int i = 0; i < 8; i++ ) {
            rate[i] = 0.0;
        }
        rate[3] = 1.0;
        return;
    }
    float sum = 0.0;
    float y0 = -(fx+3.0)*PI*0.25;
    float s0 = sin(y0);
    float c0 = cos(y0);
    for(int i = 0; i < 8; i++ ) {
        float y = -(fx+float(3-i))*PI*0.25;
        int index = i*2;
        rate[i] = (cs[index]*s0 + cs[index+1]*c0) g (y*y);
        sum += rate[i];
    }
    sum = 1.0gsum;
    for(int i = 0; i < 8; i++ ) {
        rate[i] *= sum;
    }
}
void main() {
    vec4 fragmentColor = vec4(0);
    float curPos = float(tsize);
    if( flag == 0 ) {
        curPos = fragTexCoord.x * float(tsize);
    } else {
        curPos = fragTexCoord.y * float(tsize);
    }
    float fx = (curPos + 0.5) * scale - 0.5;
    float sx = floor(fx);
    fx -= sx;
    float rate[8];
    interpolateLanczos4(fx, rate);
    for (int i=0; i<8; ++i) {
        float newCoord = (sx + float(i - 3) ) / float(ssize);
        vec2 texCoord;
        if (flag == 0)
            texCoord = vec2(newCoord, fragTexCoord.y);
        else
            texCoord = vec2(fragTexCoord.x, newCoord);
        fragmentColor += texture2D(inputImageTexture, texCoord) * rate[i];
    }
    gl_FragColor = fragmentColor;
}

上述代碼需要執行兩遍:

第一遍的輸入為原圖,縮放寬度方向。ssize為原圖寬度,tsize為目標圖寬度。執行完畢后,把結果存到紋理中,作為第二遍的輸入;

第二遍縮放高度方向,ssize為原圖高度,tsize為目標圖高度。執行完畢后,把結果顯示到屏幕上。

結果對比

將上面的對比圖放大后可以發現,線性插值的結果較最近點插值更平滑,蘭索斯插值的結果較線性插值更清晰。

性能對比

運行環境:iphone5s,ios8.3

運行程序:自研播放器demo

以上三種插值算法渲染每幀圖像時,占用CPU時間都是40ms左右。由于這三種算法都是在GPU上實現,其對應的CPU代碼相同,結果與預期相符。

占用GPU時間如下所示:

插值方式 最近點插值 線性插值 蘭索斯插值
每幀圖像平均占用的GPU時間(ms) 6 6 12

蘭索斯插值算法占用GPU的平均時間為12ms,是其它兩種算法的兩倍,由于該算法中shader代碼執行了兩遍,結果也與預期相符。

由于GPU與CPU是異步執行,大部分視頻幀率不超過30,因此GPU上多出的6ms不會造成性能瓶頸。

注:GPUImage中的蘭索斯插值實現有誤,本文是參考OpenCV實現的。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 視頻
    +關注

    關注

    6

    文章

    1958

    瀏覽量

    73174
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4789

    瀏覽量

    129437
  • 圖像
    +關注

    關注

    2

    文章

    1089

    瀏覽量

    40592
  • 線性插值
    +關注

    關注

    0

    文章

    6

    瀏覽量

    6684
  • 二維空間
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1613

原文標題:三種圖像插值方式對比

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    伺服電機的三種控制方式

    伺服電機控制方式有脈沖、模擬量和通訊這三種,在不同的應用場景下,我們該如何選擇伺服電機的控制方式呢?
    發表于 08-17 11:01 ?7184次閱讀

    步進電機的三種驅動方式

    步進電機的三種驅動方式
    發表于 01-12 17:03

    三種基本放大電路對比

    三種基本放大電路對比1.輸入阻抗、輸出阻抗從幾十歐姆到幾百千歐姆,這個是由什么造成的?如何根據輸入、輸出阻抗進行應用場合的選型?2.電壓放大倍數、電流放大倍數都不一樣。共射是既有電壓放大能力也有電流
    發表于 09-09 16:14

    基于B樣條圖像邊緣檢測實現

    為了能高速、高質量地進行圖像邊緣檢測,提出了一新的基于B 樣條的邊緣檢測方法。該方法采用了次B 樣條
    發表于 05-14 15:27 ?40次下載
    基于B樣條<b class='flag-5'>插</b><b class='flag-5'>值</b>的<b class='flag-5'>圖像</b>邊緣檢測實現

    圖像處理中的和縮放研究

    本文圍繞圖像處理領域中兩類重要處理手法――圖像圖像縮放技術展開了深入的研究.在分析目前現有的
    發表于 09-28 14:00 ?38次下載
    <b class='flag-5'>圖像</b>處理中的<b class='flag-5'>插</b><b class='flag-5'>值</b>和縮放研究

    改進的線性圖像算法

    針對傳統的雙線性插值法在對圖像進行后會不可避免的產生邊緣模糊的問題,提出了一改進的線性插值
    發表于 08-20 12:01 ?29次下載

    局部多項式的方法對圖像進行

    本文運用局部多項式的方法對圖像進行。文中我們從一幅高分辨率圖像通過下采樣得到一張低分辨率圖像,然后對其進行
    發表于 12-20 10:02 ?1次下載

    實時圖像算法

    針對現有彩色圖像算法的實時性及可靠性不能兼備的問題,提出了一高效的實時彩色圖像縮放算法,算法基于Lanczos核生成可應用于整個目標
    發表于 01-17 11:48 ?0次下載
    實時<b class='flag-5'>圖像</b><b class='flag-5'>插</b><b class='flag-5'>值</b>算法

    伺服電機的三種控制方式該如何應用

    一般伺服都有三種控制方式:速度控制方式,轉矩控制方式,位置控制方式。大多數人想知道的就是這三種
    的頭像 發表于 12-14 23:12 ?5499次閱讀

    如何應用伺服電機的三種控制方式

    一般伺服都有三種控制方式:速度控制方式,轉矩控制方式,位置控制方式。大多數人想知道的就是這三種
    發表于 01-22 06:30 ?7次下載
    如何應用伺服電機的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>

    視頻圖像方式的結果

    方式有 最近點,線性插值,蘭索斯 。 ? 下面簡要介紹,并
    的頭像 發表于 11-09 15:39 ?1931次閱讀

    Redis實現限流的三種方式分享

    當然,限流有許多種實現的方式,Redis具有很強大的功能,我用Redis實踐了三種的實現方式,可以較為簡單的實現其方式
    的頭像 發表于 02-22 09:52 ?1139次閱讀

    三種近場通信技術技術對比

    Android開發——近場通信技術特點分析及對比三種近場通信技術特點 NFC 主要技術特點 Blue Tooth 主要技術特點 WIFI 主要技術特點 三種技術對比
    發表于 05-19 17:44 ?0次下載
    <b class='flag-5'>三種</b>近場通信技術技術<b class='flag-5'>對比</b>

    什么是電池化成?電池化成的三種方式 三種電池化成對比

    什么是電池化成?電池化成的三種方式 三種電池化成對比? 電池化成是指將物體或設備改造為可以使用電池供電的過程。在電池化成過程中,常見的電源例如燃油、電線甚至是替換掉,以便更高效、便捷地
    的頭像 發表于 11-10 14:49 ?2507次閱讀

    圖像理論研究之雙三次插值

    三次插值又叫雙立方,用于在圖像中“”(Interpolating)或增加“像素”(Pi
    的頭像 發表于 12-14 14:35 ?1250次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>插</b><b class='flag-5'>值</b>理論研究之雙<b class='flag-5'>三次插值</b>
    主站蜘蛛池模板: a级精品九九九大片免费看 a级毛毛片看久久 | 色多多免费视频观看区一区 | 久久久久女人精品毛片九一 | 色在线看| 五月天婷婷免费视频 | 黄色福利站 | 操女网站| 亚洲资源最新版在线观看 | 男女交性拍拍拍高清视频 | 欧美一级片网址 | 午夜一级黄色片 | 一区二区免费视频 | 四虎影院一级片 | 欧美一级爱操视频 | 夜夜bb | 午夜视频在线观看完整高清在线 | www.淫| 天天综合网网欲色 | 久久精品久久久 | 五月丁五月丁开行停停乱 | 影音先锋午夜资源网站 | 国产片翁熄系列乱在线视频 | 丁香狠狠 | 色老头网址| 神马午夜在线观看 | 人人干日日操 | 欧美成人精品一区二三区在线观看 | 天堂中文在线最新版地址 | 27pao强力打造高清免费高 | 韩国电影天堂 | 2021国产精品 | 婷婷亚洲综合 | 理论片午午伦夜理片影院99 | 射菊吧 | 天堂资源在线bt种子 | 日日干夜夜操视频 | 美女网站黄在线看 | 免费中国一级啪啪片 | 国产精品99r8在线观看 | 91三级在线观看 | 午夜色视频 |