国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

二維Hilbert曲線構(gòu)造與繪制

2015-05-13 14:15:24施志林

施志林

摘 要:Hilbert是一種經(jīng)典的空間填充曲線,具有嚴(yán)格的自相似性,可以將他劃分成一些很小的單元,只是方向不一。且具有良好的空間聚集特性,應(yīng)用也很廣泛,譬如在圖像置亂加密,數(shù)據(jù)壓縮,數(shù)據(jù)索引編碼等。Hilbert曲線比其他的填充曲線如Z-Ordering、Gray更能保持原始數(shù)據(jù)的性能。因此詳細(xì)了解Hilbert曲線原理并使用一種自己熟悉的計(jì)算機(jī)語(yǔ)言來(lái)繪制Hilbert有很大的意義。因此,該文主要介紹二維Hilbert曲線的構(gòu)造及原理并用C#編程語(yǔ)言將它實(shí)現(xiàn)。

關(guān)鍵詞:Hilbert曲線 遞歸 自相似

中圖分類號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)01(c)-0217-01

Hilbert曲線是由德國(guó)數(shù)學(xué)家David Hilbert發(fā)現(xiàn)的一種可以填滿整個(gè)正方形的分形曲線。當(dāng)階數(shù)達(dá)到一定程度的時(shí)候,這條曲線可以填滿整個(gè)正方形。目前被應(yīng)用于很多方面,如圖像置亂,數(shù)據(jù)加密,數(shù)據(jù)壓縮等且效果不錯(cuò)。Hilbert曲線也具有很好的聚集效果,當(dāng)給每個(gè)端點(diǎn)按順序編號(hào)之后,我們可以發(fā)現(xiàn)編碼相近的地方,大多情況下,他們的實(shí)際距離也是相近,少部分編碼相差大一些的也是距離很近。但總體來(lái)說(shuō),Hilbert空間填充比其他的填充曲線如Z-Ordering、Gray更能保持原始數(shù)據(jù)的性能。

1 二維Hilbert曲線結(jié)構(gòu)

圖1是用代碼自動(dòng)生成的一階,二階,三階曲線,從中我們可以發(fā)現(xiàn),當(dāng)我們把中間的二階曲線填充的正方形分成四塊的時(shí)候,分割下來(lái)最原始的就是圖2中的四個(gè)圖形,我們可以發(fā)現(xiàn)四塊中各部分的形狀跟一階曲線相同,只是開口方向不一樣,再將三階劃分,發(fā)現(xiàn)又跟二階一樣,只是方向不同,由此可見,Hilbert曲線是由一個(gè)最基本的結(jié)構(gòu)組成,繪制完的Hilbert曲線就是一階的重復(fù)繪制,然后連接起來(lái)。而且角度也全是相差90°,可以通過(guò)圖像旋轉(zhuǎn)來(lái)繪制出每個(gè)部分。

2 圖像旋轉(zhuǎn)

圖像旋轉(zhuǎn)即是將一個(gè)圖像以某個(gè)點(diǎn)為旋轉(zhuǎn)中心,逆時(shí)針(或順時(shí)針)旋轉(zhuǎn)一定角度,得到的一個(gè)圖形。這個(gè)圖形仍然保持與原始圖像的形狀相同。假設(shè)圖像左上角坐標(biāo)為(left,top),右下角坐標(biāo)為(right,bottom),則圖像上任意一點(diǎn)(x,y)繞其中心(xcenter,ycneter)逆時(shí)針旋轉(zhuǎn)θ角度后,新的坐標(biāo)位置(x1,y1)的計(jì)算公式為:

xcenter=(width+1)/2+left;

ycenter=(hight+1)/2+top;

x1=(x-xcenter)cosθ-(y-ycenter)sinθ+xcenter;

y1=(x-xcenter)sinθ+(y-ycenter)cosθ+ycenter;

其中width為圖像的寬度,hight為圖像的高度。通過(guò)上面的數(shù)學(xué)公式就可以通過(guò)程序編碼,然后得出我們需要的坐標(biāo)等信息。

該文所述算法里面關(guān)鍵的地方就是需要利用旋轉(zhuǎn)來(lái)繪制其他相同的部分,今兒生成整條Hilbert曲線。

3 二維hilbert繪制算法

首先就是要注意各部分的方向,也就是他們與第一個(gè)圖形的角度,按逆時(shí)針?biāo)闫?,然后才可以確定正弦和余弦值。然后在遞歸調(diào)用就可以出現(xiàn)我們需要的那些朝向上下左右的基本圖形單元,然后用直線將相鄰部分連接起來(lái)就可以達(dá)到我們的目標(biāo)。算法流程圖如圖3所示。

4 結(jié)語(yǔ)

Hilbert曲線的各部分構(gòu)造相同,只是他們各部分的開口方向一樣,因此,不管是多少維的Hilbert曲線都比較好實(shí)現(xiàn),只是實(shí)現(xiàn)他們的算法簡(jiǎn)單或復(fù)雜、快或慢、高效或低效的區(qū)別。二維相對(duì)來(lái)說(shuō)簡(jiǎn)單一些,考慮的相對(duì)少一些,不過(guò)這可以為生成后面的高維曲線作鋪墊。下面的研究方向是對(duì)三維Hilbert曲線的繪制算法進(jìn)行研究。

參考文獻(xiàn)

[1] 謝耀華,湯曉安,孫茂印,等.基于分類重排LZW的圖像無(wú)損壓縮算法[J].中國(guó)圖象圖形學(xué)報(bào),2010(2):236-241.

[2] 林雪輝,蔡利棟.基于Hilbert曲線的數(shù)字圖像置亂方法研究[J].中國(guó)體視學(xué)與圖像分析,2004(4):224-227.

[3] LinShen-Yi,Chen,Chih-Shen,LiuLi,et al.Tensor Product Formulation for Hilbert Space-Filling Curves[J].J.Inf.Sci.Eng.2008(24):261-275.

[4] 孫家廣.計(jì)算機(jī)圖形學(xué)[M].北京:清華大學(xué)出版社,1990.

温州市| 平乐县| 沂南县| 卢龙县| 皮山县| 洱源县| 鄂伦春自治旗| 靖西县| 依兰县| 雷州市| 杭锦后旗| 小金县| 康平县| 苏尼特左旗| 麻城市| 清新县| 新平| 高台县| 定兴县| 五原县| 昔阳县| 合水县| 綦江县| 新津县| 延寿县| 独山县| 穆棱市| 布拖县| 开原市| 老河口市| 朔州市| 饶平县| 平陆县| 中牟县| 扬州市| 灵山县| 同德县| 朝阳县| 巴里| 印江| 多伦县|