本發(fā)明涉及一種河口海岸科學(xué)、港口及航道工程等,具體地說是一種掃描紙質(zhì)海圖水深點(diǎn)自動矢量化及信息提取方法。
背景技術(shù):
海圖是精確測繪海洋水域和沿岸地物信息的專門地圖形式,主要內(nèi)容包括:岸線、島嶼、礁石、水深、航標(biāo)和無線電導(dǎo)航臺等,是航海必不可少的參考數(shù)據(jù)。同時,也是河口海岸科學(xué)研究,海岸工程、港口及航道工程應(yīng)用獲取基礎(chǔ)數(shù)據(jù)的重要數(shù)據(jù)源,在航海、河口海岸及海洋科學(xué)研究領(lǐng)域有著廣泛的應(yīng)用。長期以來,人們只能夠從有關(guān)部門購買紙質(zhì)海圖,再掃描成數(shù)字化的圖像通過手工矢量化的方式將其轉(zhuǎn)變?yōu)楸阌谟嬎銠C(jī)處理的形式加以應(yīng)用。盡管近些年已經(jīng)可以直接獲得矢量格式的海圖,但歷史上積存的大量紙質(zhì)海圖對于認(rèn)識近岸海洋環(huán)境的發(fā)展演變是不可替代的數(shù)據(jù)源,在科研和工程應(yīng)用中具有重要意義。每張海圖上都有數(shù)以千計的點(diǎn)要素、線要素信息及大量的其它信息,常規(guī)的手工矢量化方式需要通過不斷重復(fù)性的勞動來完成,工作極其枯燥乏味,而且強(qiáng)度大、效率低、易出錯、一致性差,極大地制約了紙質(zhì)海圖在科研和工程領(lǐng)域的應(yīng)用。因此,迫切需要提高掃描紙質(zhì)海圖矢量化的效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明根據(jù)海圖制圖規(guī)范,提出一種掃描紙質(zhì)海圖水深點(diǎn)自動矢量化及信息提取方法,實(shí)現(xiàn)了海圖水深點(diǎn)要素自動精確定位和矢量化、水深數(shù)據(jù)自動提取的功能,以提升紙質(zhì)海圖矢量化的效率,挖掘歷史海圖數(shù)據(jù)的價值,為科研和工程應(yīng)用提供便利。
本發(fā)明的技術(shù)方案是:
一種掃描紙質(zhì)海圖水深點(diǎn)自動矢量化及信息提取方法,它包括以下步驟:
s1、掃描紙質(zhì)海圖;
s2、對掃描的海圖圖像文件進(jìn)行幾何校正(海圖屬于地理數(shù)據(jù)的一種,而地理數(shù)據(jù)要與實(shí)際空間位置對應(yīng)起來才有意義,利用掃描儀掃描進(jìn)電腦之后僅僅是一個普通的圖片,因此在使用之前需要對其進(jìn)行幾何校正);創(chuàng)建點(diǎn)矢量文件,文件參考坐標(biāo)系與已校正的掃描海圖圖像文件一致;
s3、框選海圖圖像中任一包含單個水深點(diǎn)的圖像區(qū)域,并獲取框選的圖像區(qū)域左上角的空間坐標(biāo)(x,y)及x、y方向的像元大小sx、sy;
s4、讀取框選區(qū)域的圖像數(shù)據(jù),識別區(qū)域中的數(shù)字,獲得數(shù)字序列以及數(shù)字序列中各數(shù)字上邊到框頂邊的頂邊距離top、下邊到框頂邊的底邊距離bottom、左邊到框左邊的左邊距離left、右邊到框左邊的右邊距離right;
s5、根據(jù)數(shù)字序列中各數(shù)字間的位置關(guān)系,獲取整數(shù)位和小數(shù)位,得到水深點(diǎn)水深讀數(shù);
s6、計算水深點(diǎn)的空間坐標(biāo);
s7、根據(jù)所獲取的水深點(diǎn)空間坐標(biāo)在步驟s2創(chuàng)建的點(diǎn)矢量文件中生成點(diǎn)要素并將水深數(shù)據(jù)寫入屬性表,在圖上顯示獲取的水深讀數(shù)和空間位置以便判斷正確與否;
s8、目視判斷所獲取的水深點(diǎn)讀數(shù)和空間位置是否正確,若不正確,進(jìn)行修正,若正確,則重復(fù)s2至s8步,完成整幅海圖的矢量化。
進(jìn)一步地,步驟s2中,采用gis軟件工具進(jìn)行幾何校正,如arcgis。
進(jìn)一步地,步驟s4中,采用ocr引擎識別所選圖像區(qū)域中的數(shù)字。
進(jìn)一步地,步驟s5中,獲取整數(shù)位和小數(shù)位,得到水深點(diǎn)水深讀數(shù)的具體步驟為;
s5.1、計算數(shù)字序列首數(shù)字和尾數(shù)字的頂邊距離top位置差,若大于像元閾值則可判斷為存在小數(shù)位,否則不存在小數(shù)位;
s5.2、若存在小數(shù)位,則將數(shù)字序列轉(zhuǎn)變?yōu)閿?shù)值類型,再除以10,得到水深點(diǎn)水深讀數(shù);若不存在小數(shù)位,將數(shù)字序列轉(zhuǎn)變?yōu)閿?shù)值類型,即得到正確的讀數(shù)。
進(jìn)一步地,步驟s5.1中,像元閾值為2-4個像元,優(yōu)選2個像元。
進(jìn)一步地,步驟s6具體包括:
s6.1、首先根據(jù)數(shù)字識別結(jié)果獲取數(shù)字序列第一個數(shù)字左上角在所選圖像區(qū)域中的坐標(biāo)(x,y);
s6.2、然后根據(jù)是否存在小數(shù)位,分別計算整數(shù)位的寬度w和高度h:
若水深讀數(shù)存在小數(shù)位,則通過數(shù)字序列中倒數(shù)第二個數(shù)字的右邊距離right減去第一個數(shù)字的左邊距離left得到寬度w,再通過排除數(shù)字序列最后一個數(shù)字之后所有數(shù)字的最大底邊距離bottom減去最小頂邊距離top得到高度h;
若不存在小數(shù)位,則通過數(shù)字序列中最后一個數(shù)字的右邊距離righ減去第一個數(shù)字的左邊距離left得到寬度w,再通過數(shù)字序列中所有數(shù)字的最大底邊距離bottom減去最小頂邊距離top得到高度h;
s6.3、采用下述公式計算整數(shù)位中心點(diǎn)在整幅海圖中的坐標(biāo)(cx,cy),即水深點(diǎn)的空間坐標(biāo):
cx=x+(x+w/2)×sx
cy=y(tǒng)-(y+h/2)×sy
其中:x,y表示框選的圖像區(qū)域左上角的空間坐標(biāo)(這個坐標(biāo)是幾何糾正之后的地理坐標(biāo)(單位是經(jīng)緯度)或投影坐標(biāo)(單位是m或其它距離單位));x,y表示數(shù)字序列第一個數(shù)字左上角在所選圖像區(qū)域中的屏幕坐標(biāo),單位是像元,sx、sy表示x、y方向的像元大小,w表示水深點(diǎn)數(shù)值整數(shù)位寬度,h表示水深點(diǎn)數(shù)值整數(shù)位高度。
進(jìn)一步地,步驟s2中,事先依照幾何校正后的海圖數(shù)字格式創(chuàng)建的0至9十個數(shù)字模板圖像。
進(jìn)一步地,步驟s8中,修正步驟為:
s8.1、操作人員手動錄入水深點(diǎn)正確讀數(shù),確認(rèn)后程序自動修改點(diǎn)矢量文件中對應(yīng)的屬性值;
s8.2、根據(jù)所錄入數(shù)字整數(shù)位,從0至9數(shù)字模板中讀取相應(yīng)的數(shù)字,若整數(shù)位只有1位只需讀取其中一個數(shù)字模板圖像,否則需要讀取相應(yīng)位數(shù)的數(shù)字模板圖像,并合成為一個圖像,獲取整數(shù)位的寬度w和高度h;
s8.3、分別對所選圖像區(qū)域和前述步驟獲取的合成數(shù)字模板圖像執(zhí)行傅里葉變換得到各自的頻譜圖;
s8.4、對兩個頻譜圖執(zhí)行相關(guān)操作(correlation),然后對相關(guān)操作(correlation)所得到的圖像執(zhí)行傅里葉逆變換,獲取傅里葉逆變換所得圖像中的極大值點(diǎn)坐標(biāo)(x,y)即為水深點(diǎn)整數(shù)位左上角在所選圖像區(qū)域中的坐標(biāo)(x,y);
s8.5、采用下述公式計算整數(shù)位中心點(diǎn)在整幅海圖中的坐標(biāo)(cx,cy),即水深點(diǎn)的空間坐標(biāo):
cx=x+(x+w/2)×sx
cy=y(tǒng)-(y+h/2)×sy
其中:x,y表示框選的圖像區(qū)域左上角的空間坐標(biāo);x,y表示數(shù)字序列第一個數(shù)字左上角在所選圖像區(qū)域中的坐標(biāo),sx、sy表示x、y方向的像元大小,w表示水深點(diǎn)數(shù)值整數(shù)位寬度,h表示水深點(diǎn)數(shù)值整數(shù)位高度。
本發(fā)明的有益效果:
本發(fā)明能夠大幅度提高海圖水深點(diǎn)矢量化工作的效率。對于一幅1:150,000的海圖,一個熟練的矢量化操作員通常需要半天至一天的不間斷工作方能完成全部水深點(diǎn)的矢量化,利用本方法僅需要1至2小時即可實(shí)現(xiàn)。
附圖說明
圖1是本發(fā)明的流程圖。
圖2是局部海圖。
其中的數(shù)字即水深點(diǎn),點(diǎn)的位置在整數(shù)位的中心,有1位和2位的整數(shù)位,也有不帶小數(shù)位的,所有小數(shù)位只有1位。
圖3是數(shù)字在框選圖像區(qū)域中的位置示意圖。
圖4是獲取水深點(diǎn)讀數(shù)和坐標(biāo)的流程圖。
其中:topi、bottomi、lefti、righti分別代表數(shù)字序列中第i個數(shù)字相對于所選數(shù)字區(qū)域的top、bottom、left、right位置;max()、min()分別代表取最大值和最小值。
圖5是水深點(diǎn)讀數(shù)及空間位置修正流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的說明。
如圖1所示,一種掃描紙質(zhì)海圖水深點(diǎn)自動矢量化及信息提取方法,它包括以下步驟:
s1、掃描紙質(zhì)海圖;
s2、對掃描的海圖圖像文件進(jìn)行幾何校正(海圖屬于地理數(shù)據(jù)的一種,而地理數(shù)據(jù)要與實(shí)際空間位置對應(yīng)起來才有意義,利用掃描儀掃描進(jìn)電腦之后僅僅是一個普通的圖片,因此在使用之前需要對其進(jìn)行幾何校正,采用gis軟件工具進(jìn)行幾何校正,如arcgis);創(chuàng)建點(diǎn)矢量文件,文件參考坐標(biāo)系與已校正的掃描海圖圖像文件一致;事先依照幾何校正后的海圖數(shù)字格式創(chuàng)建的0至9十個數(shù)字模板圖像;
s3、框選海圖圖像中任一包含單個水深點(diǎn)的圖像區(qū)域,并獲取框選的圖像區(qū)域左上角的空間坐標(biāo)(x,y)及x、y方向的像元大小sx、sy;
s4、讀取框選區(qū)域的圖像數(shù)據(jù),識別區(qū)域中的數(shù)字,如圖3所示,獲得數(shù)字序列以及數(shù)字序列中各數(shù)字上邊到框頂邊的頂邊距離top、下邊到框頂邊的底邊距離bottom、左邊到框左邊的左邊距離left、右邊到框左邊的右邊距離right;
s5、根據(jù)數(shù)字序列中各數(shù)字間的位置關(guān)系,獲取整數(shù)位和小數(shù)位,得到水深點(diǎn)水深讀數(shù),具體步驟為;
s5.1、計算數(shù)字序列首數(shù)字和尾數(shù)字的頂邊距離top位置差,若大于像元閾值則可判斷為存在小數(shù)位,否則不存在小數(shù)位;像元閾值為2-4個像元,優(yōu)選2個像元;
s5.2、若存在小數(shù)位,則將數(shù)字序列轉(zhuǎn)變?yōu)閿?shù)值類型,再除以10,得到水深點(diǎn)水深讀數(shù);若不存在小數(shù)位,將數(shù)字序列轉(zhuǎn)變?yōu)閿?shù)值類型,即得到正確的讀數(shù)。
s6、計算水深點(diǎn)的空間坐標(biāo),具體為;
s6.1、首先根據(jù)數(shù)字識別結(jié)果獲取數(shù)字序列第一個數(shù)字左上角在所選圖像區(qū)域中的坐標(biāo)(x,y);
s6.2、然后根據(jù)是否存在小數(shù)位,分別計算整數(shù)位的寬度w和高度h:
若水深讀數(shù)存在小數(shù)位,則通過數(shù)字序列中倒數(shù)第二個數(shù)字的右邊距離right減去第一個數(shù)字的左邊距離left得到寬度w,再通過排除數(shù)字序列最后一個數(shù)字之后所有數(shù)字的最大底邊距離bottom減去最小頂邊距離top得到高度h;
若不存在小數(shù)位,則通過數(shù)字序列中最后一個數(shù)字的右邊距離righ減去第一個數(shù)字的左邊距離left得到寬度w,再通過數(shù)字序列中所有數(shù)字的最大底邊距離bottom減去最小頂邊距離top得到高度h;
s6.3、采用下述公式計算整數(shù)位中心點(diǎn)在整幅海圖中的坐標(biāo)(cx,cy),即水深點(diǎn)的空間坐標(biāo):
cx=x+(x+w/2)×sx
cy=y(tǒng)-(y+h/2)×sy
其中:x,y表示框選的圖像區(qū)域左上角的空間坐標(biāo)(這個坐標(biāo)是幾何糾正之后的地理坐標(biāo)(單位是經(jīng)緯度)或投影坐標(biāo)(單位是m或其它距離單位));x,y表示數(shù)字序列第一個數(shù)字左上角在所選圖像區(qū)域中的屏幕坐標(biāo),單位是像元,sx、sy表示x、y方向的像元大小,w表示水深點(diǎn)數(shù)值整數(shù)位寬度,h表示水深點(diǎn)數(shù)值整數(shù)位高度。
s7、根據(jù)所獲取的水深點(diǎn)空間坐標(biāo)在步驟s2創(chuàng)建的點(diǎn)矢量文件中生成點(diǎn)要素并將水深數(shù)據(jù)寫入屬性表,在圖上顯示獲取的水深讀數(shù)和空間位置以便判斷正確與否;
s8、目視判斷所獲取的水深點(diǎn)讀數(shù)和空間位置是否正確,若不正確,進(jìn)行下述修正;
s8.1、操作人員手動錄入水深點(diǎn)正確讀數(shù),確認(rèn)后程序自動修改點(diǎn)矢量文件中對應(yīng)的屬性值;
s8.2、根據(jù)所錄入數(shù)字整數(shù)位,從0至9數(shù)字模板中讀取相應(yīng)的數(shù)字,若整數(shù)位只有1位只需讀取其中一個數(shù)字模板圖像,否則需要讀取相應(yīng)位數(shù)的數(shù)字模板圖像,并合成為一個圖像,獲取整數(shù)位的寬度w和高度h;
s8.3、分別對所選圖像區(qū)域和前述步驟獲取的合成數(shù)字模板圖像執(zhí)行傅里葉變換得到各自的頻譜圖;
s8.4、對兩個頻譜圖執(zhí)行相關(guān)操作,然后對相關(guān)操作所得到的圖像執(zhí)行傅里葉逆變換,獲取傅里葉逆變換所得圖像中的極大值點(diǎn)坐標(biāo)(x,y)即為水深點(diǎn)整數(shù)位左上角在所選圖像區(qū)域中的坐標(biāo)(x,y);
s8.5、采用下述公式計算整數(shù)位中心點(diǎn)在整幅海圖中的坐標(biāo)(cx,cy),即水深點(diǎn)的空間坐標(biāo):
cx=x+(x+w/2)×sx
cy=y(tǒng)-(y+h/2)×sy
其中:x,y表示框選的圖像區(qū)域左上角的空間坐標(biāo);x,y表示數(shù)字序列第一個數(shù)字左上角在所選圖像區(qū)域中的坐標(biāo),sx、sy表示x、y方向的像元大小,w表示水深點(diǎn)數(shù)值整數(shù)位寬度,h表示水深點(diǎn)數(shù)值整數(shù)位高度。
目視判斷所獲取的水深點(diǎn)讀數(shù)和空間位置是否正確,若正確,則重復(fù)s2至s8步,完成整幅海圖的矢量化。
本發(fā)明未涉及部分均與現(xiàn)有技術(shù)相同或可采用現(xiàn)有技術(shù)加以實(shí)現(xiàn)。