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

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

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

Seam Carving-一種很強(qiáng)的圖像縮放算法

jt_rfid5 ? 來(lái)源:新機(jī)器視覺(jué) ? 作者:Mine268 ? 2022-11-12 10:37 ? 次閱讀

Seam Carving

一種很強(qiáng)的圖像縮放算法

0簡(jiǎn)介

我們?cè)谂虐娴臅r(shí)候可能會(huì)遇到一些尷尬的情況。一張圖片原本是豎著的,而你希望把它當(dāng)作一張寬屏圖片,于是你只好對(duì)它進(jìn)行拉伸。

撫子的形狀瞬間變得不可描述起來(lái)。有沒(méi)有什么辦法,能不改變前景撫子的形象,只是拉伸背景的天空呢?也許你會(huì)想到萬(wàn)能的神經(jīng)網(wǎng)絡(luò)。但早在神經(jīng)網(wǎng)絡(luò)火遍大江南北之前,就有一種方法流行于世間:Seam Carving。它可以做到這樣:

完美符合我們的要求!那么這個(gè)仿佛魔法一樣的Seam Carving是如何工作的呢?

01什么是圖像

我們這里將所談?wù)摰降膱D像限定為二維的像素圖象,而不是矢量圖象或者三維的體素組成的“圖像”之類(lèi)的東西。對(duì)于一幅圖像,它的每個(gè)像素?fù)碛幸粋€(gè)整數(shù)坐標(biāo),同時(shí)擁有一個(gè)顏色,后者以 RGB 的形式表現(xiàn)。

當(dāng)人看到圖像的時(shí)候,主要是通過(guò)識(shí)別圖像當(dāng)中的邊緣來(lái)分辨圖像中的物體的,這提示我們邊緣的信息對(duì)于尋找圖像中的主要物體有著重要的作用。如果我們?cè)趫D像縮放的時(shí)候能夠盡量不影響到這些像素,那么就有可能做到在保證圖像中主要物體的比例不變的情況下拉伸背景。就像這樣

由此我們可以得出結(jié)論:通過(guò)依次刪除圖像中若干條自上而下和自左而右的像素通路,就可以達(dá)到“縮放”的目的。就自上而下的像素通路來(lái)說(shuō),這樣的通路寬度為 1,從圖像的第一行連接到圖像的最后一行,在每一行中只占據(jù)一個(gè)像素,相鄰行的像素的水平坐標(biāo)相差在 -1 到 1 之間。刪除這樣的自上而下的像素保證了圖像的寬度減一的同時(shí)不會(huì)出現(xiàn)寬度不同的行;自左而右的像素通路也是同理。

圖中的紅線分別是一條垂直通路和水平通路。如何找到這樣的像素通路,穿過(guò)盡可能少的重要物體?為此,我們引入了一個(gè)概念:“能量”。

02能量,又是能量

能量在這里起到的作用是表征像素的重要程度。先從圖像的基本元素的能量——像素的能量說(shuō)起。對(duì)于單個(gè)像素,我們可以定義其能量形式為:

971f687a-61b1-11ed-8abf-dac502259ad0.png

其中,字母I表示像素灰度值,第一個(gè)偏導(dǎo)項(xiàng)就表示了色彩在這個(gè)像素變化的劇烈程度。如果我們將 RGB 顏色的像素的顏色看作一個(gè)三維向量,那么其能量形式也會(huì)是一個(gè)三維向量,這對(duì)于算法的后續(xù)實(shí)現(xiàn)是不利的。在實(shí)現(xiàn)中,我們可以用灰度標(biāo)量代替 RGB 三維向量參與運(yùn)算,因?yàn)槿搜蹖?duì)灰度的敏感度遠(yuǎn)高于色彩。公式看起來(lái)不太直觀,來(lái)看一個(gè)例子:

與人物有關(guān)的部分,細(xì)節(jié)比較多,對(duì)應(yīng)的顏色變化也更明顯,能量也就越高。相比之下,背景部分比如天空的顏色變化不太明顯,能量普遍比較低。對(duì)應(yīng)到上圖中,可能找到的垂直能量通路就是左側(cè)的天空,刪除之后并不會(huì)影響?hù)~(yú)和人物的部分。

對(duì)于任意的一條自上而下的像素通路,該通路的能量就是該通路中所有像素的能量的和。

03利用能量進(jìn)行分割

前文說(shuō)到,像素的能量表征了像素的重要程度,那么像素通路的能量就表征了像素通路中所有像素的總體重要程度,也就表征了該通路穿過(guò)的重要物體的多寡,也就表征了刪除這條像素通路對(duì)圖像中重要物體的影響程度的大小。刪除一條能量最小的像素通路對(duì)圖像中重要物體的影響是最小的。

對(duì)于這樣一張圖像,如果對(duì)其進(jìn)行縮放,我們希望保留不同顏色間的分界線,使其形狀和比例盡可能地不改變。即這幾條分界線的重要性應(yīng)該盡可能地高。根據(jù)我們關(guān)于能量的定義,分界線附近的像素的能量顯著地高于色塊中的像素。如果要被刪去的像素通路主要通過(guò)色塊區(qū)域,那么分界線的形狀就可以得到保留了。

那么現(xiàn)在的問(wèn)題就變成了如何尋找一條能量最小的像素通路,這里以自上而下的像素通路說(shuō)明尋找這樣的像素通路的方式。這就轉(zhuǎn)換為了一個(gè)經(jīng)典的動(dòng)態(tài)規(guī)劃問(wèn)題,形式化的轉(zhuǎn)移方程如下:

我們記 dpi 為從圖像的第一行到第 i 行的第 j 個(gè)像素的通路中能量最小的通路的能量 e 以及該像素在該通路上的前驅(qū) p。第 i 行的第 j 個(gè)像素的能量為 e(i,j)。那么

97acb4a0-61b1-11ed-8abf-dac502259ad0.png

這個(gè)公式可能還是有點(diǎn)太過(guò)抽象了。由于通路一定是連通的,也就是某一個(gè)像素只可能與三個(gè)像素位于同一條通路內(nèi),分別是它的左上、正上和右上。

97bcc00c-61b1-11ed-8abf-dac502259ad0.png

如果我們分別知道它左上、正上和右上的三個(gè)像素所在的通路的最低能量,只需要選出能量最低的一條并加上自己的能量,就構(gòu)成了當(dāng)前像素的最短能量通路。換言之,這其實(shí)是一種歸納法:

·第一行每個(gè)像素的累積能量是自己的能量值

·除此之外每一行每個(gè)像素的累計(jì)能量是上一行的三個(gè)相鄰像素中最低的累積能量加上自己的能量值

·最后一行的累計(jì)能量最低的就代表了一條能量最短的通路

當(dāng)然,這里還有一個(gè)小小的擴(kuò)展:現(xiàn)在有一個(gè)希望縮減的圖像,其寬高分別需要縮減 dw 和 dh 個(gè)像素。這就意味著這張圖象需要?jiǎng)h去 dw 和 dh 條能量最小的自上而下的通路和自左而右的通路。我們可以選擇先刪除自左而右的通路,再刪除自上而下的通路,反之亦可。但是為了追求刪除通路的總能量和最小——這樣全部刪除掉的像素對(duì)重要物體的影響最小,我們還可以?xún)?yōu)化這個(gè)刪除順序。

這個(gè)問(wèn)題也可以用動(dòng)態(tài)規(guī)劃的方法解決。不妨記 dq[i] [j] 為原圖像在水平縮減 i 個(gè)像素長(zhǎng)度、垂直縮減 j 個(gè)像素長(zhǎng)度的過(guò)程中所有刪去的像素通路的能量值和的最小值,由于寬高分別為 x 和 y 的圖像在這種縮放方式下只有可能通過(guò) 寬高為 (x+1,y) 或 (x,y+1) 的圖像縮減而來(lái),所以有

97d5280e-61b1-11ed-8abf-dac502259ad0.png

有了上面的經(jīng)驗(yàn),讀者能否自己理解這個(gè)轉(zhuǎn)移方程的含義呢?

最后再來(lái)看一個(gè)利用Seam Carving方法處理的例子:

很多細(xì)節(jié)得到了保留,比起直接拉伸來(lái)說(shuō)要好太多了。

04結(jié)語(yǔ)

本文介紹的這種Seam Carving方法由Avidan等人發(fā)明,并發(fā)表在2007年的Siggraph中,目前已經(jīng)有非常廣泛的應(yīng)用,在Photoshop等軟件中都可以找到它的身影。比起目前主流的神經(jīng)網(wǎng)絡(luò)方法來(lái)說(shuō),它要簡(jiǎn)單的多,并且有很大的改良余地,最終效果也不遑多讓。有興趣的同學(xué)也可以進(jìn)一步的研究或者和我討論。

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

    關(guān)注

    23

    文章

    4587

    瀏覽量

    92501
  • Seam
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    5688
  • 圖像縮放
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    3321

原文標(biāo)題:【光電智造】Seam Carving - 一種很強(qiáng)的圖像縮放算法

文章出處:【微信號(hào):今日光電,微信公眾號(hào):今日光電】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    tft屏幕屬于lcd屏幕的一種

    TFT屏幕確實(shí)屬于LCD(液晶顯示器)屏幕的一種。LCD屏幕是一種廣泛使用的顯示技術(shù),它通過(guò)液晶分子的排列變化來(lái)控制光線的通過(guò),從而實(shí)現(xiàn)圖像的顯示。TFT(Thin Film Transistor
    的頭像 發(fā)表于 10-12 10:31 ?410次閱讀

    晶振封裝秘籍:滾邊焊(SEAM)技術(shù)大揭秘!

    晶振滾邊焊(SEAM)是一種焊接技術(shù),主要用于晶體振蕩器的封裝過(guò)程中。它涉及到在氮?dú)猸h(huán)境中使用高溫將晶振的蓋板與基座焊接在起完成封裝。使得外殼邊緣熔化并形成牢固的焊縫。這樣的焊接方式可以提高封裝
    的頭像 發(fā)表于 07-22 09:29 ?1188次閱讀
    晶振封裝秘籍:滾邊焊(<b class='flag-5'>SEAM</b>)技術(shù)大揭秘!

    圖像識(shí)別算法都有哪些方法

    圖像識(shí)別算法是計(jì)算機(jī)視覺(jué)領(lǐng)域的核心任務(wù)之,它涉及到從圖像中提取特征并進(jìn)行分類(lèi)、識(shí)別和分析的過(guò)程。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,圖像識(shí)別
    的頭像 發(fā)表于 07-16 11:14 ?4934次閱讀

    圖像識(shí)別算法的提升有哪些

    方法。 數(shù)據(jù)增強(qiáng) 數(shù)據(jù)增強(qiáng)是提高圖像識(shí)別算法性能的一種有效方法。通過(guò)對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行變換和擴(kuò)展,可以增加數(shù)據(jù)的多樣性,提高模型的泛化能力。常見(jiàn)的數(shù)據(jù)增強(qiáng)方法包括: 2.1 旋轉(zhuǎn)、縮放、平
    的頭像 發(fā)表于 07-16 11:12 ?551次閱讀

    圖像識(shí)別算法的優(yōu)缺點(diǎn)有哪些

    圖像識(shí)別算法一種利用計(jì)算機(jī)視覺(jué)技術(shù)對(duì)圖像進(jìn)行分析和理解的方法,它在許多領(lǐng)域都有廣泛的應(yīng)用,如自動(dòng)駕駛、醫(yī)療診斷、安全監(jiān)控等。然而,圖像識(shí)別
    的頭像 發(fā)表于 07-16 11:09 ?1224次閱讀

    圖像識(shí)別算法的核心技術(shù)是什么

    圖像識(shí)別算法是計(jì)算機(jī)視覺(jué)領(lǐng)域的個(gè)重要研究方向,其目標(biāo)是使計(jì)算機(jī)能夠像人類(lèi)樣理解和識(shí)別圖像中的內(nèi)容。
    的頭像 發(fā)表于 07-16 11:02 ?541次閱讀

    opencv圖像識(shí)別有什么算法

    OpenCV(Open Source Computer Vision Library)是個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),提供了大量的圖像處理和計(jì)算機(jī)視覺(jué)相關(guān)的算法。以下是些常見(jiàn)
    的頭像 發(fā)表于 07-16 10:40 ?747次閱讀

    DSP C6000教學(xué)實(shí)驗(yàn)箱操作教程_數(shù)字圖像處理:5-3 圖像縮放

    、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)圖像縮放的原理,掌握圖像的讀取方法,并實(shí)現(xiàn)圖像縮放。 二、實(shí)驗(yàn)原理
    發(fā)表于 06-20 11:28

    基于FPGA的常見(jiàn)的圖像算法模塊總結(jié)

    意在給大家補(bǔ)充下基于FPGA的圖像算法基礎(chǔ),于是講解了下常見(jiàn)的圖像算法模塊,經(jīng)過(guò)個(gè)人的總結(jié),
    的頭像 發(fā)表于 04-28 11:45 ?515次閱讀
    基于FPGA的常見(jiàn)的<b class='flag-5'>圖像</b><b class='flag-5'>算法</b>模塊總結(jié)

    FPGA圖像處理之CLAHE算法

    在FPGA圖像處理--CLAHE算法()中介紹了為啥要用CLAHE算法來(lái)做圖像增強(qiáng)。
    的頭像 發(fā)表于 01-04 12:23 ?2330次閱讀
    FPGA<b class='flag-5'>圖像</b>處理之CLAHE<b class='flag-5'>算法</b>

    FPGA圖像處理-CLAHE算法介紹()

    在介紹CLAHE算法之前必須要先提下直方圖均衡化,直方圖均衡化算法一種常見(jiàn)的圖像增強(qiáng)算法,可
    的頭像 發(fā)表于 01-02 13:32 ?1646次閱讀
    FPGA<b class='flag-5'>圖像</b>處理-CLAHE<b class='flag-5'>算法</b>介紹(<b class='flag-5'>一</b>)

    Vivado HLS的圖像傳感器FPN噪聲去除算法設(shè)計(jì)

    ,表現(xiàn)為明暗不均勻的條帶噪聲。同時(shí),為了滿(mǎn)足圖像傳感器的實(shí)時(shí)攝像要求,算法的處理延時(shí)要低[3]?;谝陨显?,本設(shè)計(jì)提出一種適用于圖像傳感器的 FPN 噪聲去除
    的頭像 發(fā)表于 01-02 11:10 ?1475次閱讀
    Vivado HLS的<b class='flag-5'>圖像</b>傳感器FPN噪聲去除<b class='flag-5'>算法</b>設(shè)計(jì)

    OpenCV邊緣模板匹配算法原理詳解

    ,悲喜交加,充分感受到了理想與現(xiàn)實(shí)的距離,不過(guò)沒(méi)關(guān)系,這里介紹一種新的模板匹配算法,主要是基于圖像邊緣梯度,它對(duì)圖像光照與像素遷移都有很強(qiáng)
    的頭像 發(fā)表于 12-07 10:56 ?1289次閱讀
    OpenCV邊緣模板匹配<b class='flag-5'>算法</b>原理詳解

    一種基于RGB-D圖像序列的協(xié)同隱式神經(jīng)同步定位與建圖(SLAM)系統(tǒng)

    提出了一種基于RGB-D圖像序列的協(xié)同隱式神經(jīng)同步定位與建圖(SLAM)系統(tǒng),該系統(tǒng)由完整的前端和后端模塊組成,包括里程計(jì)、回環(huán)檢測(cè)、子圖融合和全局優(yōu)化。
    的頭像 發(fā)表于 11-29 10:35 ?561次閱讀
    <b class='flag-5'>一種</b>基于RGB-D<b class='flag-5'>圖像</b>序列的協(xié)同隱式神經(jīng)同步定位與建圖(SLAM)系統(tǒng)

    一種可靠的峰值和起始點(diǎn)檢測(cè)算法

    電子發(fā)燒友網(wǎng)站提供《一種可靠的峰值和起始點(diǎn)檢測(cè)算法.pdf》資料免費(fèi)下載
    發(fā)表于 11-22 10:27 ?0次下載
    <b class='flag-5'>一種</b>可靠的峰值和起始點(diǎn)檢測(cè)<b class='flag-5'>算法</b>