欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

詞云的生成方法及裝置與流程

文檔序號(hào):12157734閱讀:1245來源:國(guó)知局
詞云的生成方法及裝置與流程

本發(fā)明涉及文本處理技術(shù)領(lǐng)域,特別是涉及一種詞云的生成方法及裝置。



背景技術(shù):

隨著社交媒體的廣泛應(yīng)用,“詞云”已經(jīng)成了各大社交媒體的重要應(yīng)用之一,越來越多的社交媒體通過詞云顯示詞匯。其中,詞云就是對(duì)文本中出現(xiàn)頻率較高的關(guān)鍵詞予以視覺上的突出,形成關(guān)鍵詞云層或關(guān)鍵詞渲染,從而過濾掉大量的文本信息,詞云顯示能讓觀看對(duì)象非常直觀的了解到某一類信息的重點(diǎn)內(nèi)容。

目前,大部分詞云生成都是人工編輯完成的,有些系統(tǒng)也能進(jìn)行自動(dòng)生成詞云,但詞云的形狀受到預(yù)置模板的限制,而預(yù)置模板往往都是由人工繪制得到,比如某社交媒體想要做一個(gè)西瓜相關(guān)的詞云,背景形狀希望使用西瓜的形狀。因此現(xiàn)有詞云的生成效率低。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明提供一種詞云的生成方法及裝置,主要目的在于提高詞云的生成效率。

依據(jù)本發(fā)明一個(gè)方面,提供了一種詞云的生成方法,包括:

獲取用戶輸入的圖片及詞表;

識(shí)別所述圖片中的圖形輪廓;

將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。

具體的,所述識(shí)別所述圖片中的圖形輪廓包括:

刪除所述圖片中預(yù)置范圍內(nèi)的像素點(diǎn)得到所述圖形輪廓;或

接收用戶在所述圖片中選擇的圖形輪廓。

進(jìn)一步地,所述識(shí)別所述圖片中的圖形輪廓之后,所述方法還包括:

最小化處理所述圖形輪廓所在的X軸、Y軸;

獲取最小化處理后圖形輪廓的點(diǎn)集合;

將所述點(diǎn)集合中的各個(gè)點(diǎn)轉(zhuǎn)換為軸對(duì)齊AABB包圍體。

進(jìn)一步地,所述將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云之前,所述方法還包括:

根據(jù)所述詞表中各個(gè)詞的詞頻大小設(shè)置各個(gè)詞的字體大小;

依據(jù)各個(gè)詞的字體大小為所述詞表中的每個(gè)詞構(gòu)建包圍體。

具體的,所述依據(jù)各個(gè)詞的字體大小為所述詞表中的每個(gè)詞構(gòu)建包圍體包括:

若所述詞中包含多個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的AABB包圍體;或

若所述詞中包含一個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的圓形包圍體。

具體的,所述將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云包括:

生成一個(gè)坐標(biāo)點(diǎn),所述坐標(biāo)點(diǎn)在所述圖形輪廓范圍內(nèi),用于放置所述詞表中詞頻最大的詞;

檢測(cè)在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體是否與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞;

若發(fā)生碰撞,則重新生成一個(gè)坐標(biāo)點(diǎn);

若未發(fā)生碰撞,則在所述坐標(biāo)點(diǎn)處填入所述詞表中詞頻最大的詞;

當(dāng)所述詞表中的詞均成功填入所述圖形輪廓內(nèi)時(shí),生成所述詞云。

進(jìn)一步地,所述重新生成一個(gè)坐標(biāo)點(diǎn)之前,所述方法還包括:

判斷所述詞頻最大的詞的碰撞次數(shù)是否大于預(yù)置閾值;

若所述詞頻最大的詞的碰撞次數(shù)大于預(yù)置閾值,則通過遞歸算法將所述詞表中的詞填入所述圖形輪廓內(nèi);

所述重新生成一個(gè)坐標(biāo)點(diǎn)包括:

若所述詞頻最大的詞的碰撞次數(shù)小于等于預(yù)置閾值,則重新生成一個(gè)坐標(biāo)點(diǎn)。

依據(jù)本發(fā)明另一個(gè)方面,提供了一種詞云的生成裝置,包括:

獲取單元,用于獲取用戶輸入的圖片及詞表;

識(shí)別單元,用于識(shí)別所述圖片中的圖形輪廓;

生成單元,用于將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。

具體的,所述識(shí)別單元包括:

刪除模塊,用于刪除所述圖片中預(yù)置范圍內(nèi)的像素點(diǎn)得到所述圖形輪廓;

接收模塊,用于接收用戶在所述圖片中選擇的圖形輪廓。

進(jìn)一步地,所述裝置還包括:

最小化單元,用于最小化處理所述圖形輪廓所在的X軸、Y軸;

所述獲取單元,還用于獲取最小化處理后圖形輪廓的點(diǎn)集合;

轉(zhuǎn)換單元,用于將所述點(diǎn)集合中的各個(gè)點(diǎn)轉(zhuǎn)換為軸對(duì)齊AABB包圍體。

進(jìn)一步地,所述裝置還包括:

設(shè)置單元,用于根據(jù)所述詞表中各個(gè)詞的詞頻大小設(shè)置各個(gè)詞的字體大??;

構(gòu)建單元,用于依據(jù)各個(gè)詞的字體大小為所述詞表中的每個(gè)詞構(gòu)建包圍體。

所述構(gòu)建單元,具體用于若所述詞中包含多個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的AABB包圍體;若所述詞中包含一個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的圓形包圍體。

具體的,所述生成單元包括:

生成模塊,用于生成一個(gè)坐標(biāo)點(diǎn),所述坐標(biāo)點(diǎn)在所述圖形輪廓范圍內(nèi),用于放置所述詞表中詞頻最大的詞;

檢測(cè)模塊,用于檢測(cè)在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體是否與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞;

所述生成模塊,用于若在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞,則重新生成一個(gè)坐標(biāo)點(diǎn);

填入模塊,用于若在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體未發(fā)生碰撞,則在所述坐標(biāo)點(diǎn)處填入所述詞表中詞頻最大的詞;

生成模塊,用于當(dāng)所述詞表中的詞均成功填入所述圖形輪廓內(nèi)時(shí),生成所述詞云。

進(jìn)一步地,所述生成單元還包括:

判斷模塊,用于判斷所述詞頻最大的詞的碰撞次數(shù)是否大于預(yù)置閾值;

遞歸模塊,用于若所述詞頻最大的詞的碰撞次數(shù)大于預(yù)置閾值,則通過遞歸算法將所述詞表中的詞填入所述圖形輪廓內(nèi);

所述生成模塊,用于若所述詞頻最大的詞的碰撞次數(shù)小于等于預(yù)置閾值,則重新生成一個(gè)坐標(biāo)點(diǎn)。

借由上述技術(shù)方案,本發(fā)明實(shí)施例提供的技術(shù)方案至少具有下列優(yōu)點(diǎn):

本發(fā)明實(shí)施例提供的一種詞云的生成方法及裝置,首先獲取用戶輸入的圖片及詞表,然后識(shí)別所述圖片中的圖形輪廓,最后將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。與目前根據(jù)人工編輯詞云的形狀生成詞云相比,本發(fā)明實(shí)施例在接收到用于輸入的圖片后,自動(dòng)識(shí)別圖片中的圖形輪廓,然后將詞表中的詞自動(dòng)填充到圖形輪廓中形成詞云,從而減少了人工編輯詞云形狀的過程,提高了詞云的生成效率。

上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。

附圖說明

通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:

圖1示出了本發(fā)明實(shí)施例提供的一種詞云的生成方法流程圖;

圖2示出了本發(fā)明實(shí)施例提供的一種詞云的生成裝置的結(jié)構(gòu)框圖;

圖3示出了本發(fā)明實(shí)施例提供的另一種詞云的生成裝置的結(jié)構(gòu)框圖;

圖4示出了本發(fā)明實(shí)施例提供的一種最小化處理示意圖。

具體實(shí)施方式

下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

本發(fā)明實(shí)施例提供了一種詞云的生成方法,如圖1所示,該方法包括:

101、獲取用戶輸入的圖片及詞表。

其中,所述圖片為期望使用圖形輪廓的圖片,該圖片的背景為單一色或趨近于單一色,以便系統(tǒng)可以識(shí)別圖形輪廓。詞表中包括詞和詞頻兩部分,詞頻用于表示對(duì)應(yīng)詞出現(xiàn)的次數(shù)。例如,詞表中“贊”的詞頻為32,“無效”的詞頻為18,“寶寶”的詞頻為24。

102、識(shí)別所述圖片中的圖形輪廓。

本發(fā)明實(shí)施例支持自動(dòng)識(shí)別和手動(dòng)識(shí)別圖片中的圖形輪廓,自動(dòng)識(shí)別的圖形輪廓可通過刪除所述圖片中預(yù)置范圍內(nèi)的像素點(diǎn)得到,其中預(yù)置范圍可以根據(jù)實(shí)際需求進(jìn)行設(shè)置,具體可以為10px、11px、12px等,本發(fā)明實(shí)施例不做具體限定。例如,提取圖片相近像素點(diǎn),將像素10px以內(nèi)的認(rèn)為是相近范圍,將10px以內(nèi)的相似像素作為背景色刪除,剩余部分的邊界作為圖片的圖形輪廓。手動(dòng)識(shí)別的圖像輪廓是由用戶手動(dòng)選擇的,即接收用戶在所述圖片中選擇的圖形輪廓,用戶通過系統(tǒng)提供可視化選擇界面,使用類似PS(Adobe Photoshop,圖像處理軟件)的魔術(shù)棒、磁性套選等工具選擇圖形輪廓,本發(fā)明實(shí)施例不做具體限定。

本發(fā)明在自動(dòng)識(shí)別圖片中的圖形輪廓后,向用戶輸出自動(dòng)識(shí)別的圖形輪廓,以便用戶確認(rèn)自動(dòng)識(shí)別的圖形輪廓是否達(dá)到預(yù)期目標(biāo),若達(dá)到預(yù)期目標(biāo),則直接將自動(dòng)主動(dòng)識(shí)別的圖形輪廓作為詞云的形狀;若沒有達(dá)到預(yù)期目標(biāo),用戶可通過手動(dòng)調(diào)整自動(dòng)識(shí)別的圖形輪廓,即通過PS等圖像處理軟件手動(dòng)的從圖片中選擇圖形輪廓,使手動(dòng)調(diào)整的圖形輪廓達(dá)到預(yù)置目標(biāo)。

103、將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。

在本發(fā)明實(shí)施例中,具體可根據(jù)詞表中各詞對(duì)應(yīng)的詞頻,將詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。進(jìn)一步地,在成功生成詞云之后,本發(fā)明實(shí)施例可利用OpenGL(Open Graphics Library,開源圖形庫(kù))或canvas(HTML 5Canvas,在網(wǎng)頁(yè)上繪制圖形)等畫圖API(Application Programming Interface,應(yīng)用程序編程接口)將生成的詞云截取并拷貝到剪切板中,以便使用者能夠?qū)С鰣D片。導(dǎo)出的詞云支持png、jpeg、jpg、bmp等常用圖形格式,本發(fā)明實(shí)施例不做具體限定。

本發(fā)明實(shí)施例提供的一種詞云的生成方法,在接收到用于輸入的圖片后,自動(dòng)識(shí)別圖片中的圖形輪廓,然后根據(jù)詞表中各詞對(duì)應(yīng)的詞頻,將詞表中的詞自動(dòng)填充到圖形輪廓中形成詞云,從而通過本發(fā)明實(shí)施例減少了人工編輯詞云形狀的過程,提高了詞云的生成效率。

需要說明的是,在將詞表中的詞填入所述圖形輪廓內(nèi)的過程中,需要檢測(cè)填入的詞是否與圖形輪廓發(fā)生碰撞,而檢測(cè)詞是否與圖形輪廓是否發(fā)生碰撞具體是通過詞與圖形輪廓對(duì)應(yīng)的包圍體實(shí)現(xiàn)的。因此在識(shí)別所述圖片中的圖形輪廓之后,所述方法還包括:最小化處理所述圖形輪廓所在的X軸、Y軸;獲取最小化處理后圖形輪廓的點(diǎn)集合;將所述點(diǎn)集合中的各個(gè)點(diǎn)轉(zhuǎn)換為軸對(duì)齊AABB包圍體。如圖4所示,最小化處理圖形輪廓所在的X軸、Y軸,即將圖形輪廓進(jìn)行有效偏移使圖形輪廓所在的X軸、Y軸最小,最小化處理后的X軸、Y軸與圖形輪廓相切。然后獲取圖形輪廓上點(diǎn)的集合,圖形輪廓上點(diǎn)的取值范圍以當(dāng)前圖片的像素(px)為單位,最終形成的點(diǎn)集合表示為{point1(0,5),point(5,5),point(5,10)…}。最后將點(diǎn)集合中的各個(gè)點(diǎn)轉(zhuǎn)換為軸對(duì)齊AABB包圍,以此實(shí)現(xiàn)詞與圖形輪廓的碰撞檢測(cè)。

在本發(fā)明實(shí)施例中,為實(shí)現(xiàn)詞與詞、詞與圖形輪廓的碰撞檢測(cè),因此在將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云之前,所述方法還包括:根據(jù)所述詞表中各個(gè)詞的詞頻大小設(shè)置各個(gè)詞的字體大小;依據(jù)各個(gè)詞的字體大小為所述詞表中的每個(gè)詞構(gòu)建包圍體。需要說明的是,由于詞云的特點(diǎn)是詞頻高的詞顯示的比詞頻低的詞大。詞云中可以通過觀察文字大小來了解詞頻大小。因此要根據(jù)用戶輸入條件設(shè)置字體,設(shè)置字體的方法為先找到最大最小詞頻的數(shù)值,將最大和最小詞頻分別對(duì)應(yīng)成系統(tǒng)支持的最大字號(hào)和最小字號(hào)。其他中間詞頻按比例關(guān)系分別對(duì)應(yīng)各自的字號(hào),其中遇到比值不是整數(shù)倍的時(shí)候按照四舍五入的原則處理。

具體的,所述依據(jù)各個(gè)詞的字體大小為所述詞表中的每個(gè)詞構(gòu)建包圍體包括:若所述詞中包含多個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的AABB包圍體;若所述詞中包含一個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的圓形包圍體。在本發(fā)明實(shí)施例中,根據(jù)詞的字號(hào)換算出每個(gè)字的大小,根據(jù)詞中字的個(gè)數(shù)計(jì)算出長(zhǎng)度。單個(gè)漢字時(shí),根據(jù)單字先計(jì)算出單字的AABB包圍體,然后獲取AABB的中心點(diǎn),并得到中心點(diǎn)到各個(gè)邊的邊長(zhǎng),以到邊長(zhǎng)最長(zhǎng)距離的長(zhǎng)度做半徑,獲取單個(gè)字的圓形包圍體,然后計(jì)算出圓形包圍體上的各個(gè)點(diǎn)集合。需要說明的是,由于圓形包圍體的緊密性好,因此當(dāng)詞為單個(gè)字時(shí),構(gòu)建詞的圓形包圍體,可減少詞的碰撞幾率,從而提高詞云的生成效率。

具體的,所述將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云包括:生成一個(gè)坐標(biāo)點(diǎn),所述坐標(biāo)點(diǎn)在所述圖形輪廓范圍內(nèi),用于放置所述詞表中詞頻最大的詞;檢測(cè)在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體是否與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞;若發(fā)生碰撞,則重新生成一個(gè)坐標(biāo)點(diǎn);若未發(fā)生碰撞,則在所述坐標(biāo)點(diǎn)處填入所述詞表中詞頻最大的詞;當(dāng)所述詞表中的詞均成功填入所述圖形輪廓內(nèi)時(shí),生成所述詞云。即本發(fā)明實(shí)施例通過背包算法,依次從大詞頻開始向圖像輪廓中放置帶有包圍體的詞。

其中,本發(fā)明實(shí)施例可通過正態(tài)分布的隨機(jī)數(shù)生成一個(gè)坐標(biāo)點(diǎn),為了使詞表中的詞能夠均勻的分布在圖像輪廓中,可通過Math.random()函數(shù)生成N個(gè)隨機(jī)數(shù),則這N個(gè)隨機(jī)數(shù)的平均數(shù)趨近與0.5,當(dāng)N值越大平均數(shù)趨近0.5的概率就越大,當(dāng)N值越小平均數(shù)趨近0.5的概率就越小,N個(gè)(0,1)之間的隨機(jī)數(shù)的平均數(shù)以0.5為中心成正態(tài)分布。然后根據(jù)生成的隨機(jī)數(shù)得到一個(gè)坐標(biāo)點(diǎn)。

在生成一個(gè)坐標(biāo)點(diǎn)之后,在該坐標(biāo)點(diǎn)處放置所述詞表中詞頻最大的詞,然后檢測(cè)在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體是否與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞。如果在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體與點(diǎn)集合中點(diǎn)的包圍體發(fā)生碰撞,說明在該坐標(biāo)點(diǎn)放置的詞已經(jīng)超出了圖形輪廓的邊界范圍;如果在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍圖與圖形輪廓中已放置詞的包圍體發(fā)生碰撞,說明在該坐標(biāo)點(diǎn)放置的詞已經(jīng)和圖形輪廓中已有的詞發(fā)生重疊。因此,當(dāng)在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞時(shí),需要從新生成一個(gè)坐標(biāo)點(diǎn),然后繼續(xù)檢測(cè)在從新生成的坐標(biāo)點(diǎn)處顯示的詞表中詞頻最大的詞是否與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞,若未發(fā)生碰撞,則在所述坐標(biāo)點(diǎn)處填入所述詞表中詞頻最大的詞。

例如,詞表中包括4個(gè)詞,分別為A、B、C,其中A的詞頻為6,B的詞頻為5,C的詞頻為4。則根據(jù)詞表中詞頻的大小順序,首先生成一個(gè)坐標(biāo)點(diǎn)a,然后檢測(cè)在坐標(biāo)點(diǎn)a放置的A的包圍體是否與點(diǎn)集合中點(diǎn)的包圍體發(fā)生碰撞,若未發(fā)生碰撞,則在坐標(biāo)點(diǎn)a處填入詞A,并從新生成一個(gè)坐標(biāo)點(diǎn)b,然后檢測(cè)在坐標(biāo)點(diǎn)b放置的B的包圍體是否與A的包圍體或點(diǎn)集合中點(diǎn)的包圍體發(fā)生碰撞,若未發(fā)生碰撞,則在坐標(biāo)點(diǎn)b處填入詞B,并從新生成一個(gè)坐標(biāo)點(diǎn)c,然后檢測(cè)在坐標(biāo)點(diǎn)c放置的C的包圍體是否與A的包圍體、B的包圍體或點(diǎn)集合中點(diǎn)的包圍體發(fā)生碰撞,若發(fā)生碰撞,則從新生成一個(gè)坐標(biāo)點(diǎn)d,然后檢測(cè)在坐標(biāo)點(diǎn)d放置的C的包圍體是否與A的包圍體、B的包圍體或點(diǎn)集合中點(diǎn)的包圍體發(fā)生碰撞,若未發(fā)生碰撞,則在坐標(biāo)點(diǎn)d處填入詞C。當(dāng)詞A、B、C成功填入所述圖形輪廓內(nèi)后生成所述詞云。

進(jìn)一步地,在重新生成一個(gè)坐標(biāo)點(diǎn)之前,所述方法還包括:判斷所述詞頻最大的詞的碰撞次數(shù)是否大于預(yù)置閾值;若所述詞頻最大的詞的碰撞次數(shù)大于預(yù)置閾值,則通過遞歸算法將所述詞表中的詞填入所述圖形輪廓內(nèi);所述重新生成一個(gè)坐標(biāo)點(diǎn)包括:若所述詞頻最大的詞的碰撞次數(shù)小于等于預(yù)置閾值,則重新生成一個(gè)坐標(biāo)點(diǎn)。其中,所述預(yù)置閾值是根據(jù)圖形輪廓確定的,即預(yù)置閾值可為圖像輪廓內(nèi)像素點(diǎn)的個(gè)數(shù)。

例如,詞表中包含A、B、C、D四個(gè)詞,對(duì)應(yīng)的詞頻分別為5、4、3、2。根據(jù)詞頻的大小順序已成功的將詞表中的詞A、B、C填入到圖形輪廓內(nèi),在向圖形輪廓填入詞D過程中,若發(fā)現(xiàn)在生成的所有坐標(biāo)點(diǎn)處顯示的詞D的包圍體點(diǎn)均與集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞,說明圖形輪廓中沒有足夠大的剩余空間放置詞D,此時(shí)可通過遞歸算法將剩余的詞填入圖形輪廓內(nèi)。即首先從圖形輪廓中提取出詞C,然后從新生成一個(gè)坐標(biāo)點(diǎn)放置詞C,然后繼續(xù)放置詞D,若改變?cè)~C的位置后,詞D任然無法成功填入圖形輪廓中,則再繼續(xù)向前提取詞B,改變?cè)~B的位置,接著放置詞C、詞D,以此類推通過不斷的取出放入的方式,將詞表中的詞填入圖形輪廓內(nèi)。

對(duì)于本發(fā)明實(shí)施例,若通過遞歸算法也無法將詞表中所有的詞成功的填入圖形輪廓內(nèi),則等比縮小詞表中各個(gè)詞的字體大小,然后從新將詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。

進(jìn)一步的,作為對(duì)上述圖1所示方法的實(shí)現(xiàn),本發(fā)明實(shí)施例提供了一種詞云的生成裝置,如圖2所示,該裝置包括:獲取單元21、識(shí)別單元22、生成單元23。

獲取單元21,用于獲取用戶輸入的圖片及詞表;

其中,所述圖片為期望使用圖形輪廓的圖片,該圖片的背景為單一色或趨近于單一色,以便系統(tǒng)可以識(shí)別圖形輪廓。詞表中包括詞和詞頻兩部分,詞頻用于表示對(duì)應(yīng)詞出現(xiàn)的次數(shù)。例如,詞表中“贊”的詞頻為32,“無效”的詞頻為18,“寶寶”的詞頻為24。

識(shí)別單元22,用于識(shí)別所述圖片中的圖形輪廓;

本發(fā)明實(shí)施例支持自動(dòng)識(shí)別和手動(dòng)識(shí)別圖片中的圖形輪廓,自動(dòng)識(shí)別的圖形輪廓可通過刪除所述圖片中預(yù)置范圍內(nèi)的像素點(diǎn)得到,其中預(yù)置范圍可以根據(jù)實(shí)際需求進(jìn)行設(shè)置,具體可以為10px、11px、12px等,本發(fā)明實(shí)施例不做具體限定。例如,提取圖片相近像素點(diǎn),將像素10px以內(nèi)的認(rèn)為是相近范圍,將10px以內(nèi)的相似像素作為背景色刪除,剩余部分的邊界作為圖片的圖形輪廓。手動(dòng)識(shí)別的圖像輪廓是由用戶手動(dòng)選擇的,即接收用戶在所述圖片中選擇的圖形輪廓,用戶通過系統(tǒng)提供可視化選擇界面,使用類似PS(Adobe Photoshop,圖像處理軟件)的魔術(shù)棒、磁性套選等工具選擇圖形輪廓,本發(fā)明實(shí)施例不做具體限定。

本發(fā)明在自動(dòng)識(shí)別圖片中的圖形輪廓后,向用戶輸出自動(dòng)識(shí)別的圖形輪廓,以便用戶確認(rèn)自動(dòng)識(shí)別的圖形輪廓是否達(dá)到預(yù)期目標(biāo),若達(dá)到預(yù)期目標(biāo),則直接將自動(dòng)主動(dòng)識(shí)別的圖形輪廓作為詞云的形狀;若沒有達(dá)到預(yù)期目標(biāo),用戶可通過手動(dòng)調(diào)整自動(dòng)識(shí)別的圖形輪廓,即通過PS等圖像處理軟件手動(dòng)的從圖片中選擇圖形輪廓,使手動(dòng)調(diào)整的圖形輪廓達(dá)到預(yù)置目標(biāo)。

生成單元23,用于將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。

在本發(fā)明實(shí)施例中,具體可根據(jù)詞表中各詞對(duì)應(yīng)的詞頻,將詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。進(jìn)一步地,在成功生成詞云之后,本發(fā)明實(shí)施例可利用OpenGL(Open Graphics Library,開源圖形庫(kù))或canvas(HTML 5Canvas,在網(wǎng)頁(yè)上繪制圖形)等畫圖API(Application Programming Interface,應(yīng)用程序編程接口)將生成的詞云截取并拷貝到剪切板中,以便使用者能夠?qū)С鰣D片。導(dǎo)出的詞云支持png、jpeg、jpg、bmp等常用圖形格式,本發(fā)明實(shí)施例不做具體限定。

進(jìn)一步地,如圖3所示,所述識(shí)別單元22包括:

刪除模塊221,用于刪除所述圖片中預(yù)置范圍內(nèi)的像素點(diǎn)得到所述圖形輪廓;

接收模塊222,用于接收用戶在所述圖片中選擇的圖形輪廓。

進(jìn)一步地,如圖3所示,所述裝置還包括:

最小化單元24,用于最小化處理所述圖形輪廓所在的X軸、Y軸;

所述獲取單元21,還用于獲取最小化處理后圖形輪廓的點(diǎn)集合;

轉(zhuǎn)換單元25,用于將所述點(diǎn)集合中的各個(gè)點(diǎn)轉(zhuǎn)換為軸對(duì)齊AABB包圍體。

如圖4所示,最小化處理圖形輪廓所在的X軸、Y軸,即將圖形輪廓進(jìn)行有效偏移使圖形輪廓所在的X軸、Y軸最小,最小化處理后的X軸、Y軸與圖形輪廓相切。然后獲取圖形輪廓上點(diǎn)的集合,圖形輪廓上點(diǎn)的取值范圍以當(dāng)前圖片的像素(px)為單位,最終形成的點(diǎn)集合表示為{point1(0,5),point(5,5),point(5,10)…}。最后將點(diǎn)集合中的各個(gè)點(diǎn)轉(zhuǎn)換為軸對(duì)齊AABB包圍,以此實(shí)現(xiàn)詞與圖形輪廓的碰撞檢測(cè)。

進(jìn)一步地,如圖3所示,所述裝置還包括:

設(shè)置單元26,用于根據(jù)所述詞表中各個(gè)詞的詞頻大小設(shè)置各個(gè)詞的字體大?。?/p>

構(gòu)建單元27,用于依據(jù)各個(gè)詞的字體大小為所述詞表中的每個(gè)詞構(gòu)建包圍體。

需要說明的是,由于詞云的特點(diǎn)是詞頻高的詞顯示的比詞頻低的詞大。詞云中可以通過觀察文字大小來了解詞頻大小。因此要根據(jù)用戶輸入條件設(shè)置字體,設(shè)置字體的方法為先找到最大最小詞頻的數(shù)值,將最大和最小詞頻分別對(duì)應(yīng)成系統(tǒng)支持的最大字號(hào)和最小字號(hào)。其他中間詞頻按比例關(guān)系分別對(duì)應(yīng)各自的字號(hào),其中遇到比值不是整數(shù)倍的時(shí)候按照四舍五入的原則處理。

所述構(gòu)建單元27,具體用于若所述詞中包含多個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的AABB包圍體;若所述詞中包含一個(gè)字,則依據(jù)所述詞的字體大小構(gòu)建所述詞的圓形包圍體。

在本發(fā)明實(shí)施例中,根據(jù)詞的字號(hào)換算出每個(gè)字的大小,根據(jù)詞中字的個(gè)數(shù)計(jì)算出長(zhǎng)度。單個(gè)漢字時(shí),根據(jù)單字先計(jì)算出單字的AABB包圍體,然后獲取AABB的中心點(diǎn),并得到中心點(diǎn)到各個(gè)邊的邊長(zhǎng),以到邊長(zhǎng)最長(zhǎng)距離的長(zhǎng)度做半徑,獲取單個(gè)字的圓形包圍體,然后計(jì)算出圓形包圍體上的各個(gè)點(diǎn)集合。需要說明的是,由于圓形包圍體的緊密性好,因此當(dāng)詞為單個(gè)字時(shí),構(gòu)建詞的圓形包圍體,可減少詞的碰撞幾率,從而提高詞云的生成效率。

進(jìn)一步地,如圖3所示,所述生成單元23包括:

生成模塊231,用于生成一個(gè)坐標(biāo)點(diǎn),所述坐標(biāo)點(diǎn)在所述圖形輪廓范圍內(nèi),用于放置所述詞表中詞頻最大的詞;

檢測(cè)模塊232,用于檢測(cè)在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體是否與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞;

所述生成模塊231,用于若在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體發(fā)生碰撞,則重新生成一個(gè)坐標(biāo)點(diǎn);

填入模塊233,用于若在所述坐標(biāo)點(diǎn)顯示的詞頻最大的詞的包圍體與所述點(diǎn)集合中點(diǎn)的包圍體或所述圖形輪廓中已放置詞的包圍體未發(fā)生碰撞,則在所述坐標(biāo)點(diǎn)處填入所述詞表中詞頻最大的詞;

生成模塊231,用于當(dāng)所述詞表中的詞均成功填入所述圖形輪廓內(nèi)時(shí),生成所述詞云。

進(jìn)一步地,如圖3所示,所述生成單元23還包括:

判斷模塊234,用于判斷所述詞頻最大的詞的碰撞次數(shù)是否大于預(yù)置閾值;

遞歸模塊235,用于若所述詞頻最大的詞的碰撞次數(shù)大于預(yù)置閾值,則通過遞歸算法將所述詞表中的詞填入所述圖形輪廓內(nèi);

所述生成模塊231,用于若所述詞頻最大的詞的碰撞次數(shù)小于等于預(yù)置閾值,則重新生成一個(gè)坐標(biāo)點(diǎn)。

對(duì)于本發(fā)明實(shí)施例,若通過遞歸算法也無法將詞表中所有的詞成功的填入圖形輪廓內(nèi),則等比縮小詞表中各個(gè)詞的字體大小,然后從新將詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。

本發(fā)明實(shí)施例提供的一種詞云的生成裝置,首先獲取用戶輸入的圖片及詞表,然后識(shí)別所述圖片中的圖形輪廓,最后將所述詞表中的詞填入所述圖形輪廓內(nèi)以生成詞云。與目前根據(jù)人工編輯詞云的形狀生成詞云相比,本發(fā)明實(shí)施例在接收到用于輸入的圖片后,自動(dòng)識(shí)別圖片中的圖形輪廓,然后將詞表中的詞自動(dòng)填充到圖形輪廓中形成詞云,從而減少了人工編輯詞云形狀的過程,提高了詞云的生成效率。

在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實(shí)施例中的“第一”、“第二”等是用于區(qū)分各實(shí)施例,而并不代表各實(shí)施例的優(yōu)劣。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。

在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。

在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。

類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。

本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。

本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的詞云的生成方法及裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。

應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
嫩江县| 木里| 汪清县| 九龙城区| 武冈市| 新乡县| 东兴市| 临沧市| 靖边县| 宜昌市| 五台县| 关岭| 岳池县| 双流县| 宝山区| 庆安县| 洪湖市| 谢通门县| 海丰县| 红桥区| 陇南市| 庆安县| 临安市| 张家港市| 梁平县| 泸水县| 申扎县| 鹤壁市| 明溪县| 通化县| 正定县| 贵定县| 固阳县| 台北县| 沾化县| 双牌县| 曲阜市| 宜城市| 河北区| 桦甸市| 扎囊县|