本發(fā)明屬于圖像處理技術(shù)領(lǐng)域,尤其涉及用于圖像處理的逆向映射表的獲取方法及裝置。
背景技術(shù):
映射表技術(shù)是計算機(jī)圖像處理領(lǐng)域中的重要方法。在傳統(tǒng)的圖像變形處理過程中,輸入圖像中任意像素點P(x,y),經(jīng)過預(yù)先設(shè)置好的函數(shù)f1和f2的變換處理后,對應(yīng)到輸出圖像中的像素點P’(x’,y’),其中x’=f1(x,y),y’=f2(x,y)。但上述變換過程較為復(fù)雜,在對每幀圖像的每個點進(jìn)行運(yùn)算時會導(dǎo)致耗時較大,在很多應(yīng)用場合下無法實現(xiàn)實時處理,因此,通過映射表技術(shù),將(x,y)和(x’,y’)之間的對應(yīng)關(guān)系事先計算得到并保存到映射表中,實際應(yīng)用時無需再進(jìn)行計算,只要查找映射表即可知道(x,y)的對應(yīng)點坐標(biāo)(x’,y’),運(yùn)行效率則會大大提高,非常適用于需要實時處理的場景。
通過以上描述可知,映射表技術(shù)由于可以將大量的計算過程放入圖像預(yù)處理環(huán)節(jié),因此運(yùn)行效率極高。通常,由于顯示方式的限制,輸入圖像中像素點的坐標(biāo)是整數(shù)型的(即任一點P(x,y)中,x、y為整數(shù)),經(jīng)過預(yù)設(shè)函數(shù)f1和f2對該點進(jìn)行映射后,得到的對應(yīng)點的坐標(biāo)往往是浮點型的(即對應(yīng)點P’(x’,y’)中,x’、y’為實數(shù))。又由于輸出圖像同樣受到顯示方式的限制,因此需要將對應(yīng)點坐標(biāo)從浮點型改成整數(shù)型,而實際操作中只能通過對浮點數(shù)坐標(biāo)取整來將對應(yīng)點坐標(biāo)從浮點型改成整數(shù)型,由此,在圖像處理過程中若采用這樣的正向映射表(從輸入圖像坐標(biāo)映射到輸出圖像坐標(biāo))進(jìn)行查表操作,會導(dǎo)致輸入圖像上的不同點映射至輸出圖像上相同點,或者輸出圖像上的某些點卻沒有映射結(jié)果等問題,產(chǎn)生映射效率低,輸出圖像存在空洞,輸出圖像畫面質(zhì)量差的現(xiàn)象。因此,在實際應(yīng)用中,正向映射表是很少使用的,被廣泛采用的是逆向映射表(從輸出圖像坐標(biāo)映射到輸入圖像坐標(biāo)),即,輸出圖像中任意像素點P’(x’,y’),經(jīng)過函數(shù)變換處理后,對應(yīng)到輸入圖像中的對應(yīng)像素點P(x,y),其中x=f1-1(x’,y’),y=f2-1(x’,y’)。采用逆向映射表,可以完全避免正向映射表使用過程中可能產(chǎn)生的上述問題。然而,在有些應(yīng)用場合,坐標(biāo)映射的函數(shù)關(guān)系非常復(fù)雜,難以從正向映射函數(shù)推導(dǎo)求出逆向映射函數(shù)。如投影儀柱面幕布投影變形過程中所采用的正向映射函數(shù)形式相當(dāng)復(fù)雜,通過該正向映射函數(shù)很難求得逆向映射函數(shù)的精確解,從而會對最終輸出圖像的畫面質(zhì)量帶來影響。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供了用于圖像處理的逆向映射表的獲取方法及裝置,以解決在現(xiàn)有的圖像處理過程中,存在很難通過正向映射函數(shù)求得逆向映射函數(shù)的精確解的問題。
第一方面,提供了一種用于圖像處理的逆向映射表的獲取方法,包括:
通過遍歷輸入圖像的整數(shù)型像素坐標(biāo)Pi(xint,yint)并查詢正向映射表,獲取所述輸入圖像對應(yīng)的輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float),其中,0<i<Wsrc*Hsrc,所述Wsrc*Hsrc為所述輸入圖像的像素分辨率;
遍歷所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(mint,nint),并確定與所述Pj(mint,nint)對應(yīng)的P’i(x’float,y’float),其中,0<j<Wdst*Hdst,所述Wdst*Hdst為所述輸出圖像的像素分辨率;
按照所述輸出圖像中浮點型像素坐標(biāo)及其對應(yīng)的整數(shù)型像素坐標(biāo)之間的距離,對所述P’i進(jìn)行排序,獲取所述距離最小的N個所述P’i,所述N為整數(shù);
基于所述距離最小的N個所述P’i對應(yīng)的所述距離,以及基于所述距離最小的N個所述P’i在所述正向映射表中對應(yīng)的N個Pi,建立逆向映射表。
第二方面,提供了一種用于圖像處理的逆向映射表的獲取裝置,包括:
獲取單元,用于通過遍歷輸入圖像的整數(shù)型像素坐標(biāo)Pi(xint,yint)并查詢正向映射表,獲取所述輸入圖像對應(yīng)的輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float),其中,0<i<Wsrc*Hsrc,所述Wsrc*Hsrc為所述輸入圖像的像素分辨率;
確定單元,用于遍歷所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(mint,nint),并確定與所述Pj(mint,nint)對應(yīng)的P’i(x’float,y’float),其中,0<j<Wdst*Hdst,所述Wdst*Hdst為所述輸出圖像的像素分辨率;
排序單元,用于按照所述輸出圖像中浮點型像素坐標(biāo)及其對應(yīng)的整數(shù)型像素坐標(biāo)之間的距離,對所述P’i進(jìn)行排序,獲取所述距離最小的N個所述P’i,所述N為整數(shù);
建立單元,用于基于所述距離最小的N個所述P’i對應(yīng)的所述距離,以及基于所述距離最小的N個所述P’i在所述正向映射表中對應(yīng)的N個Pi,建立逆向映射表。
在本發(fā)明實施例中,采用數(shù)值模擬的方式將正向映射表合成為逆向映射表,生成的逆向映射表保證了較高的映射精度,這樣便使得在無法得到合適的映射方向及精確的映射關(guān)系的情況下,仍然能夠保證高效率和高質(zhì)量的映射,有利于提高圖像處理過程的輸出質(zhì)量。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的用于圖像處理的逆向映射表的獲取方法的實現(xiàn)流程圖;
圖2是本發(fā)明實施例提供的用于圖像處理的逆向映射表的獲取方法的實驗示例圖;
圖3是本發(fā)明實施例提供的用于圖像處理的逆向映射表的獲取裝置的結(jié)構(gòu)框圖。
具體實施方式
以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、技術(shù)之類的具體細(xì)節(jié),以便透徹理解本發(fā)明實施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實施例中也可以實現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
圖1示出了本發(fā)明實施例提供的用于圖像處理的逆向映射表的獲取方法的實現(xiàn)流程,詳述如下:
在S101中,通過遍歷輸入圖像的整數(shù)型像素坐標(biāo)Pi(xint,yint)并查詢正向映射表,獲取所述輸入圖像對應(yīng)的輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float),其中,0<i<Wsrc*Hsrc,所述Wsrc*Hsrc為所述輸入圖像的像素分辨率。
在S102中,遍歷所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(iint,iint),并確定與所述Pj(mint,nint)對應(yīng)的P’i(x’float,y’float),其中,0<j<Wdst*Hdst,所述Wdst*Hdst為所述輸出圖像的像素分辨率。
具體地,通過對所述輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float)進(jìn)行取整操作,得到所述輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float)對應(yīng)的整數(shù)型像素坐標(biāo),之后,在所述取整操作得到的整數(shù)型像素坐標(biāo)中,查找與所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(mint,nint)相同的整數(shù)型像素坐標(biāo),并將該整數(shù)型像素坐標(biāo)對應(yīng)的所述輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float),確定為與所述Pj(mint,nint)對應(yīng)的P’i(x’float,y’float)。
在S103中,按照所述輸出圖像的浮點型像素坐標(biāo)與對應(yīng)的所述輸出圖像的整數(shù)型像素坐標(biāo)之間的距離,對所述P’i進(jìn)行排序,獲取所述距離最小的N個所述P’i,所述N為整數(shù)。
具體地,S103可以通過以下方式執(zhí)行:
按照對所述P’i進(jìn)行排序,其中,所述Dist為所述距離。
在本發(fā)明實施例中,所述N為精度系數(shù),一般取大于4小于32的整數(shù),精度系數(shù)越大,求得的逆向映射表越精確,但相對地,運(yùn)算復(fù)雜度也越高,因此,在執(zhí)行S103之前,可以對N的值進(jìn)行設(shè)置。
在S104中,基于所述距離最小的N個所述P’i對應(yīng)的所述距離,以及基于所述距離最小的N個所述P’i在所述正向映射表中對應(yīng)的N個Pi,建立逆向映射表。
作為本發(fā)明的一個實施例,建立的逆向映射表中,所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(mint,nint)對應(yīng)輸入圖像的浮點型像素坐標(biāo)p’j(m’float,n’float),
其中,
令S103中獲取到的Dist最小的N個P’i為P’1~P’N,這N個P’i對應(yīng)的Dist分別為Dist1~DistN,而這N個P’i在正向映射表中對應(yīng)的輸入圖像的像素點坐標(biāo)分別為P1(xint,1,yint,1)~PN(xint,N,yint,N),則可以確定出逆向映射表中對應(yīng)的輸入圖像的浮點型像素坐標(biāo),對于輸出圖像中的任意像素點pj的坐標(biāo)(mint,nint),通過該近似的逆向映射表,可查得輸入圖像中對應(yīng)像素點p’j的坐標(biāo)(m’float,n’float),該坐標(biāo)為浮點型,在實際使用中需要采用插值方法進(jìn)行顯示,該采用插值方法進(jìn)行顯示是圖像算法中的常見算法,在此不贅述。
在本發(fā)明實施例中,采用數(shù)值模擬的方式將正向映射表合成為逆向映射表,生成的逆向映射表保證了較高的映射精度,這樣便使得在無法得到合適的映射方向及精確的映射關(guān)系的情況下,仍然能夠保證高效率和高質(zhì)量的映射,有利于提高圖像處理過程的輸出質(zhì)量。
應(yīng)理解,上述實施例中各步驟的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。
示例性地,在使用投影儀將圖像投影到幕布時,由于投影儀的位置不與幕布平行,或者幕布本身存在形變,因此需要將輸出圖像做一定程度的形變處理,以保證方正的成像效果,因此,本發(fā)明實施例的方案可用于投影儀柱面幕布投影變形算法中。在獲取到逆向映射表之后,后續(xù)的圖像處理均可依照該逆向映射表完成。例如,原始的待投影圖像如圖2(a)的所示,圖2(b)和圖2(c)分別為采用正向映射表和采用本發(fā)明實施例方案生成的逆向映射表進(jìn)行映射處理后的輸出圖像,比較之下,采用本發(fā)明實施例方案生成的逆向映射表在圖像處理的映射過程中不會產(chǎn)生重疊映射、映射漏洞(例如圖2(a)兩側(cè)的黑線)等問題,同時也明顯地提高了輸出圖像的清晰度和畫面質(zhì)量。
對應(yīng)于上文實施例所述的用于圖像處理的逆向映射表的獲取方法,圖3示出了本發(fā)明實施例提供的用于圖像處理的逆向映射表的獲取裝置的結(jié)構(gòu)框圖,為了便于說明,僅示出了與本實施例相關(guān)的部分。
參照圖3,該裝置包括:
獲取單元31,通過遍歷輸入圖像的整數(shù)型像素坐標(biāo)Pi(xint,yint)并查詢正向映射表,獲取所述輸入圖像對應(yīng)的輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float),其中,0<i<Wsrc*Hsrc,所述Wsrc*Hsrc為所述輸入圖像的像素分辨率;
確定單元32,遍歷所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(mint,nint),并確定與所述Pj(mint,nint)對應(yīng)的P’i(x’float,y’float),其中,0<j<Wdst*Hdst,所述Wdst*Hdst為所述輸出圖像的像素分辨率;
排序單元33,按照所述輸出圖像的浮點型像素坐標(biāo)與對應(yīng)的所述輸出圖像的整數(shù)型像素坐標(biāo)之間的距離,對所述P’i進(jìn)行排序,獲取所述距離最小的N個所述P’i,所述N為整數(shù);
建立單元34,基于所述距離最小的N個所述P’i對應(yīng)的所述距離,以及基于所述距離最小的N個所述P’i在所述正向映射表中對應(yīng)的N個Pi,建立逆向映射表。
可選地,所述裝置還包括:
設(shè)置所述N的取值。
可選地,所述N大于4且小于32。
可選地,
所述確定單元包括:
取整子單元,用于對所述輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float)進(jìn)行取整操作,得到所述輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float)對應(yīng)的整數(shù)型像素坐標(biāo);
確定子單元,用于在所述取整操作得到的整數(shù)型像素坐標(biāo)中,查找與所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(mint,nint)相同的整數(shù)型像素坐標(biāo),并將該整數(shù)型像素坐標(biāo)對應(yīng)的所述輸出圖像的浮點型像素坐標(biāo)P’i(x’float,y’float),確定為與所述Pj(mint,nint)對應(yīng)的P’i(x’float,y’float)。
可選地,所述按照所述輸出圖像的浮點型像素坐標(biāo)與對應(yīng)的所述輸出圖像的整數(shù)型像素坐標(biāo)之間的距離,對所述P’i進(jìn)行排序包括:
按照對所述P’i進(jìn)行排序。
可選地,所述基于所述距離最小的N個所述P’i對應(yīng)的所述距離,以及基于所述距離最小的N個所述P’i在所述正向映射表中對應(yīng)的N個Pi,建立逆向映射表包括:
建立所述逆向映射表,在所述逆向映射表中,所述輸出圖像的整數(shù)型像素坐標(biāo)Pj(mint,nint)對應(yīng)輸入圖像的浮點型像素坐標(biāo)p’j(m’float,n’float),
其中,
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元、模塊完成,即將所述裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護(hù)范圍。上述系統(tǒng)中單元、模塊的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機(jī)軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
在本發(fā)明所提供的實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的系統(tǒng)實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些接口,裝置或單元的間接耦合或通訊連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明實施例各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。