全景圖漫游中交互熱點的自動選取方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及虛擬現(xiàn)實、全景影像技術(shù)領(lǐng)域,具體涉及一種全景圖漫游中交互熱點 的自動選取方法。
【背景技術(shù)】
[0002] 全景圖漫游是利用專業(yè)相機,通過廣角的表現(xiàn)手段,捕捉整個場景的圖像信息,然 后使用軟件進行圖片拼合,將平面照片變?yōu)?60度全觀,從而用于虛擬現(xiàn)實瀏覽,把二維的 平面圖模擬成真實的三維空間,使用戶產(chǎn)生強烈的沉浸感。
[0003] 在全景圖漫游過程中,當(dāng)用戶瀏覽到某個物體時,需要與之交互,以展現(xiàn)與之相關(guān) 的特定信息。為了實現(xiàn)交互的目的,就需要預(yù)先定義交互區(qū)域。這個交互區(qū)域通常用分布 在交互區(qū)域邊緣的一組簡化點集來表示,稱為"交互熱點"。
[0004]目前"交互熱點"是通過開發(fā)人員手工選取的。開發(fā)人員需要在"交互物體"的邊 緣逐個選取"交互熱點",形成一個閉合環(huán)。例如著名的全景圖像轉(zhuǎn)換工具Pan〇2VR就是這 樣處理的。這種方法在處理大量全景圖數(shù)據(jù)時,開發(fā)人員的工作量就變得巨大,工作效率低 下。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明針對目前設(shè)定"交互熱點"時,工作量巨大,工作效率低下的問題,提供了一 種全景圖漫游中交互熱點的自動選取方法,采用圖像處理技術(shù),自動選取全景圖指定區(qū)域 的熱點。
[0006] 本發(fā)明提供的全景圖漫游中交互熱點的自動選取方法,實現(xiàn)步驟如下:
[0007] 步驟1 :用戶選取交互物體的所在區(qū)域;優(yōu)選采用矩形框來選取區(qū)域;
[0008] 步驟2 :選取背景圖像,將用戶所選區(qū)域向左右上下四個方向放大X個像素,得到 包含背景圖像的區(qū)域;X為大于20小于100的整數(shù);
[0009] 步驟3 :對經(jīng)過步驟2得到區(qū)域進行圖像分割;
[0010] 步驟4:對圖像進行自適應(yīng)閾值處理,使得圖像變?yōu)槎祱D像,交互物體變?yōu)榘?色,背景變?yōu)楹谏?br>[0011] 步驟5 :提取交互物體的輪廓,獲得分布在交互物體邊緣的連續(xù)點集;
[0012] 步驟6 :利用多邊形逼近方法對所提取的交互物體的輪廓進行簡化;
[0013] 步驟7 :提取步驟6所得到的多邊形的各個端點作為熱點。
[0014] 采用本發(fā)明交互熱點的自動選取方法,一方面可以使從繁重的人工選取工作中解 放出來,另一方面可以提高交互熱點選取的準(zhǔn)確性。
【附圖說明】
[0015] 圖1是本發(fā)明的全景圖漫游中交互熱點的自動選取方法的流程示意圖;
[0016] 圖2是本發(fā)明實施例中選取物體多在區(qū)域的示意圖;
[0017]圖3是本發(fā)明實施例中選取背景圖像的示意圖;
[0018]圖4是本發(fā)明實施例中進行圖像分割后得到的圖像;
[0019]圖5是本發(fā)明實施例中進行對矩形框內(nèi)圖像二值化后得到的圖像;
[0020] 圖6是本發(fā)明實施例中獲取的圖像輪廓的示意圖;
[0021] 圖7是本發(fā)明實施例中多邊形簡化的圖像輪廓示意圖;
[0022] 圖8是本發(fā)明實施例中所獲取的熱點的示意圖。
【具體實施方式】
[0023] 下面將結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明。
[0024] 全景圖具有真實場景的特點,又比三維動畫經(jīng)濟實用,因此被廣泛應(yīng)用于旅游景 點、酒店賓館、建筑設(shè)計、房地產(chǎn)、裝修展示、網(wǎng)上商城等領(lǐng)域。在這些應(yīng)用領(lǐng)域中,如果交互 物體的數(shù)量較少,通過傳統(tǒng)軟件進行手工選取還可行。如果項目中全景圖數(shù)量巨大、交互物 體繁多(比如各種網(wǎng)上商城、裝修展示等),那么"交互熱點"的自動選取就稱為必然選擇, 會得到廣泛的應(yīng)用。
[0025] 通過本發(fā)明方法,用戶在全景圖上指定交互物體所在的大致區(qū)域,本發(fā)明方法自 動分割出需要交互的物體,提取物體的輪廓,然后把輪廓上的點進行大規(guī)模的簡化,使簡化 后的點集可以代表物體的輪廓,從而得到"交互熱點"。
[0026] 本發(fā)明的全景圖漫游中交互熱點的自動選取方法,實現(xiàn)步驟如下:
[0027] 步驟1 :用戶選取交互物體所在區(qū)域。
[0028] 本發(fā)明方法需要用戶指定交互物體所在區(qū)域作為輸入。這個區(qū)域是大致區(qū)域,不 需要十分精確。因為在一張全景圖中存在多個物體,所以需要用戶指定所選物體的大致區(qū) 域。例如,本發(fā)明實施例中選取吊燈,如圖2所示,可選取吊燈所在的一個矩形區(qū)域。檢測 所選取區(qū)域的頂點坐標(biāo)和長寬并保存。圖2中,以整個圖片的左上角作為坐標(biāo)原點(0,0), 圖片橫向為x軸,且向右為x正方向,圖片縱向為y軸方向,且向下為y正方向。
[0029] 本發(fā)明實施例中定義如下數(shù)據(jù)結(jié)構(gòu)來保存所選取的區(qū)域:
[0030]char*HotPoint::GrabHotPointsAsString(char*filename,intRectX,int RectY,intRectffidth,intRectHeight,boolIfDrawPoints,boolIfShowImage)
[0031] 其中,RectX表示矩形區(qū)域左上角起點的x坐標(biāo);RectY表示矩形區(qū)域左上角起點 的y坐標(biāo);RectWidth表示矩形區(qū)域的寬;RectHeight表示矩形區(qū)域的高。filename表示 當(dāng)前所選區(qū)域保存的文件名;IfDrawPoints表示是否繪制點集,IfShowImage表示是否顯 示圖像。
[0032] 本發(fā)明實施例中優(yōu)先設(shè)置矩形選取框,用戶通過拉伸收縮矩形框,將要交互的物 體框在矩形框中。采用矩形框選取物體,一方面方便用戶簡單操作,另一方面也使得下面的 圖像操作簡單。
[0033] 步驟2:選取背景圖像。本發(fā)明實施例中X設(shè)置為50,即把用戶所選區(qū)域向左右上 下四個方向放大50個像素,作為下一步圖像分割的背景圖像。
[0034] 步驟2是本發(fā)明方法對圖像分割方法的改進之處。背景圖像不再針對整幅圖像, 而是縮小到分割區(qū)域周圍。通過這樣的改進,減少了數(shù)據(jù)計算量,加快了運算速度,提高了 圖像分割的精確度。
[0035] 本發(fā)明實施例對圖2所示圖像進行步驟2,如圖3所示,黑色實框為用戶所選矩形, 黑色虛線框為自動擴展后得到的區(qū)域。
[0036] 具體地,本發(fā)明進行擴展的代碼如下:
[0037]image=&_image;
[0038]intextension= 50 ;
[0039]intOutRectX=max(RectX-extension, 0);
[0040]intOutRectY=max(RectY-extension, 0);
[0041]int0utRectX2 =min(RectX+Rectffidth+extension,image->cols-rect.x);
[0042]int0utRectY2 =min(RectY+RectHeight+extension,image->rows-rect.y);
[0043]rectOut=Rect(Point(OutRectX,OutRectY),Point(0utRectX2, 0utRectY2));
[0044]imageOut= (*image) (rectOut);
[0045] 其中,extension為擴展值X,OutRectX和OutRectY分別表示擴展后矩形區(qū)域的 左上角頂點的x和y坐標(biāo),0utRectX2和0utRectY2分別表示擴展后矩形區(qū)域的右上角頂 點的x和y坐標(biāo),rectOut表示擴展得到的矩形區(qū)域左、右上角頂點的坐標(biāo)。在確定頂