色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

三種圖像插值方式對比

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

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

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

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

最近點插值

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

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

for(int i=0; i

最近點插值

線性插值

線性插值是以距離為權(quán)重的一種插值方式。在一維空間中,假設(shè)有點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)

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

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

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


我參考OpenCV中的實現(xiàn)方式,實現(xiàn)了一份GPU上的蘭索斯插值算法,該算法在GPU上運行,并不額外消耗CPU資源。其對應(yīng)的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;
}

上述代碼需要執(zhí)行兩遍:

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

第二遍縮放高度方向,ssize為原圖高度,tsize為目標(biāo)圖高度。執(zhí)行完畢后,把結(jié)果顯示到屏幕上。

結(jié)果對比

將上面的對比圖放大后可以發(fā)現(xiàn),線性插值的結(jié)果較最近點插值更平滑,蘭索斯插值的結(jié)果較線性插值更清晰。

性能對比

運行環(huán)境:iphone5s,ios8.3

運行程序:自研播放器demo

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

占用GPU時間如下所示:

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

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

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

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 視頻
    +關(guān)注

    關(guān)注

    6

    文章

    1947

    瀏覽量

    72939
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4743

    瀏覽量

    128992
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1085

    瀏覽量

    40488
  • 線性插值
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6677
  • 二維空間
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1597

原文標(biāo)題:三種圖像插值方式對比

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

收藏 人收藏

    評論

    相關(guān)推薦

    伺服電機的三種控制方式

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

    步進電機的三種驅(qū)動方式

    步進電機的三種驅(qū)動方式
    發(fā)表于 01-12 17:03

    三種基本放大電路對比

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

    基于B樣條圖像邊緣檢測實現(xiàn)

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

    圖像處理中的和縮放研究

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

    改進的線性圖像算法

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

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

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

    實時圖像算法

    針對現(xiàn)有彩色圖像算法的實時性及可靠性不能兼?zhèn)涞膯栴},提出了一高效的實時彩色圖像縮放算法,算法基于Lanczos核生成可應(yīng)用于整個目標(biāo)
    發(fā)表于 01-17 11:48 ?0次下載
    實時<b class='flag-5'>圖像</b><b class='flag-5'>插</b><b class='flag-5'>值</b>算法

    伺服電機的三種控制方式該如何應(yīng)用

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

    如何應(yīng)用伺服電機的三種控制方式

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

    視頻圖像方式的結(jié)果

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

    Redis實現(xiàn)限流的三種方式分享

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

    三種近場通信技術(shù)技術(shù)對比

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

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

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

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

    三次插值又叫雙立方,用于在圖像中“”(Interpolating)或增加“像素”(Pi
    的頭像 發(fā)表于 12-14 14:35 ?1161次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>插</b><b class='flag-5'>值</b>理論研究之雙<b class='flag-5'>三次插值</b>
    主站蜘蛛池模板: 99热只有精品| 99久久精品免费看国产免费| 蜜臀AV999无码精品国产| 国产亚洲制服免视频| 沟沟人体一区二区| 成人性生交大片免费看4| av色天堂2018在线观看| 91综合精品网站久久| 中文文字幕文字幕亚洲色| 野花高清在线观看免费3中文| 亚洲精品久久久无码| 亚洲合集综合久久性色| 亚洲精品沙发午睡系列| 亚洲精品伊人久久久久| 亚洲欧美中文日韩v在线| 亚洲人成色777777老人头| 亚洲欧洲无码AV在线观看你懂的| 亚洲精品天堂自在久久77| 亚洲精品在线播放视频| 亚洲一区二区三区91| 伊人成综合网伊人222| 伊人精品国产| 1788福利视频在视频线| 99久久爱看免费观看| SM双性精跪趴灌憋尿调教H| mdapptv麻豆下载| 荡公乱妇HD中文字幕| 国产精品97久久AV麻豆| 国产亚洲精品在浅麻豆| 久久99re6国产在线播放| 龙岩综合频道| 青草影院内射中出高潮-百度| 色网址在线观看| 亚洲精品免费网站| 2019伊人查蕉在线观看| WWW婷婷AV久久久影片| 国产扒开美女双腿屁股流白浆| 国产色婷婷精品人妻蜜桃成熟| 久久re视频这里精品09首页| 男女高潮又爽又黄又无遮挡| 日本学生VIDEOVIDEOS更新|