㈠ GIS 學科都是有哪些重要的演算法謝謝
一 空間數據壓縮演算法
1 基於矢量的壓縮演算法
2 基於柵格的壓縮演算法
二 空間數據內插演算法
1 點的內插演算法
2 區域內插演算法
3 采樣點曲線擬合
三 空間數據轉換演算法
1 矢量數據向柵格數據轉換
2 柵格數據向矢量數據轉換
3 TIN向規則格網DEM轉換
四 空間數據誤差分析演算法
1 屬性誤差的分析演算法
2 位置誤差分析演算法
五 多邊形自動生成與裁剪演算法
1 多邊形性質及有關處理
2 弧-弧拓撲生成演算法
3 多邊形自動生成演算法
4 多邊形圖裁剪演算法
六 TIN的構建演算法
1 基於離散點的構TIN演算法
2 基於等高線的構TIN演算法
七 Voronoi圖構建演算法
1 平面點集Voronoi圖構建演算法
2 線/面集Voronoi圖構建演算法
3 球面Voronoi圖構建演算法
八 空間變換演算法
1 地圖坐標變換演算法
2 地圖投影變換演算法
3 透視投影變換演算法
九 空間度量演算法
1 空間距離與方向度量演算法
2 面向度量演算法
3 體積度量演算法
4 坡度坡向度量演算法
十 數字地形分析演算法
1 基本地形因子分析演算法
2 地形特徵提取演算法
3 數字地形典型應用演算法
十一 空間統計分析演算法
1 多變數統計分析演算法
2 空間分類統計演算法
3 層次分析演算法
十二 空間分析演算法
1 路徑分析演算法
2 資源分配演算法
3 緩沖區分析演算法
4 疊置分析演算法
十三 GIS可視化操縱演算法
1 地形簡化演算法
2 多解析度紋理生成演算法
3 紋理映射演算法
4 光相關演算法
十四 空間數據挖掘與知識發現演算法
㈡ 數字圖像處理的基本演算法及要解決的主要問題
圖像處理,是對圖像進行分析、加工、和處理,使其滿足視覺、心理以及其他要求的技術。圖像處理是信號處理在圖像域上的一個應用。目前大多數的圖像是以數字形式存儲,因而圖像處理很多情況下指數字圖像處理。此外,基於光學理論的處理方法依然佔有重要的地位。
圖像處理是信號處理的子類,另外與計算機科學、人工智慧等領域也有密切的關系。
傳統的一維信號處理的方法和概念很多仍然可以直接應用在圖像處理上,比如降噪、量化等。然而,圖像屬於二維信號,和一維信號相比,它有自己特殊的一面,處理的方式和角度也有所不同。
目錄
[隱藏]
* 1 解決方案
* 2 常用的信號處理技術
o 2.1 從一維信號處理擴展來的技術和概念
o 2.2 專用於二維(或更高維)的技術和概念
* 3 典型問題
* 4 應用
* 5 相關相近領域
* 6 參見
[編輯] 解決方案
幾十年前,圖像處理大多數由光學設備在模擬模式下進行。由於這些光學方法本身所具有的並行特性,至今他們仍然在很多應用領域佔有核心地位,例如 全息攝影。但是由於計算機速度的大幅度提高,這些技術正在迅速的被數字圖像處理方法所替代。
從通常意義上講,數字圖像處理技術更加普適、可靠和准確。比起模擬方法,它們也更容易實現。專用的硬體被用於數字圖像處理,例如,基於流水線的計算機體系結構在這方面取得了巨大的商業成功。今天,硬體解決方案被廣泛的用於視頻處理系統,但商業化的圖像處理任務基本上仍以軟體形式實現,運行在通用個人電腦上。
[編輯] 常用的信號處理技術
大多數用於一維信號處理的概念都有其在二維圖像信號領域的延伸,它們中的一部分在二維情形下變得十分復雜。同時圖像處理也具有自身一些新的概念,例如,連通性、旋轉不變性,等等。這些概念僅對二維或更高維的情況下才有非平凡的意義。
圖像處理中常用到快速傅立葉變換,因為它可以減小數據處理量和處理時間。
[編輯] 從一維信號處理擴展來的技術和概念
* 解析度(Image resolution|Resolution)
* 動態范圍(Dynamic range)
* 帶寬(Bandwidth)
* 濾波器設計(Filter (signal processing)|Filtering)
* 微分運算元(Differential operators)
* 邊緣檢測(Edge detection)
* Domain molation
* 降噪(Noise rection)
[編輯] 專用於二維(或更高維)的技術和概念
* 連通性(Connectedness|Connectivity)
* 旋轉不變性(Rotational invariance)
[編輯] 典型問題
* 幾何變換(geometric transformations):包括放大、縮小、旋轉等。
* 顏色處理(color):顏色空間的轉化、亮度以及對比度的調節、顏色修正等。
* 圖像合成(image composite):多個圖像的加、減、組合、拼接。
* 降噪(image denoising):研究各種針對二維圖像的去噪濾波器或者信號處理技術。
* 邊緣檢測(edge detection):進行邊緣或者其他局部特徵提取。
* 分割(image segmentation):依據不同標准,把二維圖像分割成不同區域。
* 圖像製作(image editing):和計算機圖形學有一定交叉。
* 圖像配准(image registration):比較或集成不同條件下獲取的圖像。
* 圖像增強(image enhancement):
* 圖像數字水印(image watermarking):研究圖像域的數據隱藏、加密、或認證。
* 圖像壓縮(image compression):研究圖像壓縮。
[編輯] 應用
* 攝影及印刷 (Photography and printing)
* 衛星圖像處理 (Satellite image processing)
* 醫學圖像處理 (Medical image processing)
* 面孔識別, 特徵識別 (Face detection, feature detection, face identification)
* 顯微圖像處理 (Microscope image processing)
* 汽車障礙識別 (Car barrier detection)
[編輯] 相關相近領域
* 分類(Classification)
* 特徵提取(Feature extraction)
* 模式識別(Pattern recognition)
* 投影(Projection)
* 多尺度信號分析(Multi-scale signal analysis)
* 離散餘弦變換(The Discrete Cosine Transform)
㈢ 立體通的六大核心演算法引擎是什麼
瞳孔跟蹤演算法引擎、高精度AI給圖演算法引擎、自動補償演算法引擎、收錄演算法引擎、橫豎屏切換演算法引擎、自動校準演算法引擎,它們與裸視三維智慧膜相結合實現了:無需黃金視角,任意角度觀看;解決困擾3D顯示多年的重影、眩暈問題;低成本爆品,便於快速消費普及;一鏈自動校準,使用簡單方便;適配全球主流存量、增量手機,人人手機均可秒變3D神機;橫豎屏切換自由,滿足觀影、游戲、直播、購物等不同場景需求
㈣ 在圖像處理中有哪些演算法
1、圖像變換:
由於圖像陣列很大,直接在空間域中進行處理,涉及計算量很大。採用各種圖像變換的方法,如傅立葉變換、沃爾什變換、離散餘弦變換等間接處理技術,將空間域的處理轉換為變換域處理,可減少計算量,獲得更有效的處理。它在圖像處理中也有著廣泛而有效的應用。
2、圖像編碼壓縮:
圖像編碼壓縮技術可減少描述圖像的數據量,以便節省圖像傳輸、處理時間和減少所佔用的存儲器容量。
壓縮可以在不失真的前提下獲得,也可以在允許的失真條件下進行。
編碼是壓縮技術中最重要的方法,它在圖像處理技術中是發展最早且比較成熟的技術。
3、圖像增強和復原:
圖像增強和復原的目的是為了提高圖像的質量,如去除雜訊,提高圖像的清晰度等。
圖像增強不考慮圖像降質的原因,突出圖像中所感興趣的部分。如強化圖像高頻分量,可使圖像中物體輪廓清晰,細節明顯;如強化低頻分量可減少圖像中雜訊影響。
4、圖像分割:
圖像分割是數字圖像處理中的關鍵技術之一。
圖像分割是將圖像中有意義的特徵部分提取出來,其有意義的特徵有圖像中的邊緣、區域等,這是進一步進行圖像識別、分析和理解的基礎。
5、圖像描述:
圖像描述是圖像識別和理解的必要前提。
一般圖像的描述方法採用二維形狀描述,它有邊界描述和區域描述兩類方法。對於特殊的紋理圖像可採用二維紋理特徵描述。
6、圖像分類:
圖像分類屬於模式識別的范疇,其主要內容是圖像經過某些預處理(增強、復原、壓縮)後,進行圖像分割和特徵提取,從而進行判決分類。
圖像分類常採用經典的模式識別方法,有統計模式分類和句法模式分類。
圖像處理主要應用在攝影及印刷、衛星圖像處理、醫學圖像處理、面孔識別、特徵識別、顯微圖像處理和汽車障礙識別等。
數字圖像處理技術源於20世紀20年代,當時通過海底電纜從英國倫敦到美國紐約傳輸了一幅照片,採用了數字壓縮技術。
數字圖像處理技術可以幫助人們更客觀、准確地認識世界,人的視覺系統可以幫助人類從外界獲取3/4以上的信息,而圖像、圖形又是所有視覺信息的載體,盡管人眼的鑒別力很高,可以識別上千種顏色,
但很多情況下,圖像對於人眼來說是模糊的甚至是不可見的,通過圖象增強技術,可以使模糊甚至不可見的圖像變得清晰明亮。
㈤ 圖像分割演算法總結
圖像處理的很多任務都離不開圖像分割。因為圖像分割在cv中實在太重要(有用)了,就先把圖像分割的常用演算法做個總結。
接觸機器學習和深度學習時間已經不短了。期間看過各種相關知識但從未總結過。本文過後我會盡可能詳細的從工程角度來總結,從傳統機器學習演算法,傳統計算機視覺庫演算法到深度學習目前常用演算法和論文,以及模型在各平台的轉化,量化,服務化部署等相關知識總結。
圖像分割常用演算法大致分為下面幾類。由於圖像的能量范函,邊緣追蹤等方法的效果往往只能解決特定問題,效果並不理想,這里不再闡述。當然二值化本身也可以分割一些簡單圖像的。但是二值化演算法較多,我會專門做一個文章來總結。這里不再贅述。
1.基於邊緣的圖像分割演算法:
有利用圖像梯度的傳統演算法運算元的sobel,roberts,prewitt,拉普拉斯以及canny等。
這些演算法的基本思想都是採用合適的卷積運算元,對圖像做卷積。從而求出圖像對應的梯度圖像。(至於為什麼通過如圖1這樣的運算元卷積,即可得到圖像的梯度圖像,請讀者復習下卷積和倒數的概念自行推導)由於圖像的邊緣處往往是圖像像素差異較大,梯度較大地方。因此我們通過合適的卷積核得到圖像的梯度圖像,即得到了圖像的邊緣圖像。至於二階運算元的推導,與一階類似。優點:傳統運算元梯度檢測,只需要用合適的卷積核做卷積,即可快速得出對應的邊緣圖像。缺點:圖像邊緣不一定準確,復雜圖像的梯度不僅僅出現在圖像邊緣,可以能出現在圖像內部的色彩和紋理上。
也有基於深度學習方法hed,rcf等。由於這類網路都有同一個比較嚴重的缺陷,這里只舉例hed網路。hed是基於FCN和VGG改進,同時引出6個loss進行優化訓練,通過多個層輸出不同scale的粒度的邊緣,然後通過一個訓練權重融合各個層的邊緣結果。hed網路結構如下:
可以得到一個比較完整的梯度圖像,可參考github的hed實現。優點:圖像的梯度細節和邊緣完整性,相比傳統的邊緣運算元要好很多。但是hed對於邊緣的圖像內部的邊緣並不能很好的區分。當然我們可以自行更改loss來嘗試只擬合外部的圖像邊緣。但最致命的問題在於,基於vgg的hed的網路表達能力有限,對於圖像和背景接近,或者圖像和背景部分相融的圖片,hed似乎就有點無能為力了。
2.基於區域分割的演算法:
區域分割比較常用的如傳統的演算法結合遺傳演算法,區域生長演算法,區域分裂合並,分水嶺演算法等。這里傳統演算法的思路是比較簡單易懂的,如果有無法理解的地方,歡迎大家一起討論學習。這里不再做過多的分析。
基於區域和語意的深度學習分割演算法,是目前圖像分割成果較多和研究的主要方向。例如FCN系列的全卷積網路,以及經典的醫學圖像分割常用的unet系列,以及rcnn系列發展下的maskrcnn,以及18年底的PAnet。基於語意的圖像分割技術,無疑會成為圖像分割技術的主流。
其中,基於深度學習語意的其他相關演算法也可以間接或直接的應用到圖像分割。如經典的圖像matting問題。18年又出現了許多非常優秀的演算法和論文。如Deep-Image-Matting,以及效果非常優秀的MIT的 semantic soft segmentation(sss).
基於語意的圖像分割效果明顯要好於其他的傳統演算法。我在解決圖像分割的問題時,首先嘗試用了hed網路。最後的效果並不理想。雖然也參考github,做了hed的一些fine-tune,但是還是上面提到的原因,在我多次嘗試後,最終放棄。轉而適用FCN系列的網路。但是fcn也無法解決圖像和背景相融的問題。圖片相融的分割,感覺即需要大的感受野,又需要未相融部分原圖像細節,所以單原FCN的網路,很難做出准確的分割。中間還測試過很多其他相關的網路,但都效果不佳。考慮到感受野和原圖像細節,嘗試了resnet和densenet作為圖像特徵提取的底層。最終我測試了unet系列的網路:
unet的原始模型如圖所示。在自己拍照爬蟲等手段採集了將近1000張圖片。去掉了圖片質量太差的,圖片內容太過類似的。爬蟲最終收集160多張,自己拍照收集200張圖片後,又用ps手動p了邊緣圖像,採用圖像增強變換,大約有300*24張圖片。原生unet網路的表現比較一般。在將unet普通的卷積層改為resnet後,網路的表達能力明顯提升。在將resnet改為resnet101,此時,即使對於部分相融的圖像,也能較好的分割了。但是unet的模型體積已經不能接受。
在最後階段,看到maskrcnn的實例分割。maskrcnn一路由rcnn,fasterrcnn發展過來。於是用maskrcnn來加入自己的訓練數據和label圖像進行訓練。maskrcnn的結果表現並不令人滿意,對於邊緣的定位,相比於其他演算法,略顯粗糙。在產品應用中,明顯還不合適。
3.基於圖的分割演算法
基於深度學習的deepgrab,效果表現並不是十分理想。deepgrab的git作者backbone採用了deeplabv2的網路結構。並沒有完全安裝原論文來做。
論文原地址參考: https://arxiv.org/pdf/1707.00243.pdf
整體結構類似於encode和decoder。並沒有太仔細的研究,因為基於resent101的結構,在模型體積,速度以及deeplab的分割精度上,都不能滿足當前的需求。之前大致總結過計算機視覺的相關知識點,既然目前在討論移動端模型,那後面就分模塊總結下移動端模型的應用落地吧。
由於時間實在有限。這里並沒有針對每個演算法進行詳細的講解。後續我會從基礎的機器學習演算法開始總結。
㈥ 圖的圖的遍歷
常見的圖遍歷方式有兩種:深度優先遍歷和廣度優先遍歷,這兩種遍歷方式對有向圖和無向圖均適用。 深度優先遍歷的思想類似於樹的先序遍歷。其遍歷過程可以描述為:從圖中某個頂點v出發,訪問該頂點,然後依次從v的未被訪問的鄰接點出發繼續深度優先遍歷圖中的其餘頂點,直至圖中所有與v有路徑相通的頂點都被訪問完為止。
深度優先遍歷演算法實現:
為了便於在演算法中區分頂點是否已被訪問過,需要創建一個一維數組visited[0..n-1](n是圖中頂點的數目),用來設置訪問標志,其初始值visited(0≤i≤n-1)為"0",表示鄰接表中下標值為i的頂點沒有被訪問過,一旦該頂點被訪問,將visited置成"1"。
int visited[0..n-1]={0,0,...0};
void DFS(AdjList adj,int v)
{//v是遍歷起始點的在鄰接表中的下標值,其下標從0開始
visited[v]=1; visited(adj[v].elem);
for (w=adj[v].firstedge;w;w=w->next)
if (!visited[w->adjvex]) DFS(adj,w->adjvex);
}
對於無向圖,這個演算法可以遍歷到v頂點所在的連通分量中的所有頂點,而與v頂點不在一個連通分量中的所有頂點遍歷不到;而對於有向圖可以遍歷到起始頂點v能夠到達的所有頂點。若希望遍歷到圖中的所有頂點,就需要在上述深度優先遍歷演算法的基礎上,增加對每個頂點訪問狀態的檢測: intvisited[0..n-1]={0,0,...0};voidDFSTraverse(AdjListadj){for(v=0;v<n;v++)if(!visited[v])DFS(adj,v);} 對圖的廣度優先遍歷方法描述為:從圖中某個頂點v出發,在訪問該頂點v之後,依次訪問v的所有未被訪問過的鄰接點,然後再訪問每個鄰接點的鄰接點,且訪問順序應保持先被訪問的頂點其鄰接點也優先被訪問,直到圖中的所有頂點都被訪問為止。下面是對一個無向圖進行廣度優先遍歷的過程。
下面我們討論一下實現廣度優先遍歷演算法需要考慮的幾個問題:
(1)在廣度優先遍歷中,要求先被訪問的頂點其鄰接點也被優先訪問,因此,必須對每個頂點的訪問順序進行記錄,以便後面按此順序訪問各頂點的鄰接點。應利用一個隊列結構記錄頂點訪問順序,就可以利用隊列結構的操作特點,將訪問的每個頂點入隊,然後,再依次出隊,並訪問它們的鄰接點;
(2)在廣度優先遍歷過程中同深度優先遍歷一樣,為了避免重復訪問某個頂點,也需要創建一個一維數組visited[0..n-1](n是圖中頂點的數目),用來記錄每個頂點是否已經被訪問過。
int visited[0..n-1]={0,0,...0};
void BFS(AdjList adj,int v)
{//v是遍歷起始點在鄰接表中的下標,鄰接表中下標從0開始
InitQueue(Q); //Q是隊列
visited[v]=1; visite(adj[v].elem); EnQueue(Q,v);
while (!QueueEmpty(Q)) {
DeQueue(Q,v);
for (w=adj[v].firstedge;w;w=w->next)
if (!visited[w->adjvex]) {
visited[w->adjvex]=1;
visite(adj[w->adjvex].elem);
EnQueue(Q,w->adjvex); }
}
}
㈦ 圖遍歷演算法之DFS/BFS
在計算機科學, 圖遍歷(Tree Traversal,也稱圖搜索)是一系列圖搜索的演算法, 是單次訪問樹結構類型數據(tree data structure)中每個節點以便檢查或更新的一系列機制。圖遍歷演算法可以按照節點訪問順序進行分類,根據訪問目的或使用場景的不同,演算法大致可分為28種:
圖遍歷即以特定方式訪問圖中所有節點,給定節點下有多種可能的搜索路徑。假定以順序方式進行(非並行),還未訪問的節點就需通過堆棧(LIFO)或隊列(FIFO)規則來確定訪問先後。由於樹結構是一種遞歸的數據結構,在清晰的定義下,未訪問節點可存儲在調用堆棧中。本文介紹了圖遍歷領域最流行的廣度優先搜索演算法BFS和深度優先搜索演算法DFS,對其原理、應用及實現進行了闡述。通常意義上而言,深度優先搜索(DFS)通過遞歸調用堆棧比較容易實現,廣義優先搜索通過隊列實現。
深度優先搜索(DFS)是用於遍歷或搜索圖數據結構的演算法,該演算法從根節點開始(圖搜索時可選擇任意節點作為根節點)沿著每個分支進行搜索,分支搜索結束後在進行回溯。在進入下一節點之前,樹的搜索盡可能的加深。
DFS的搜索演算法如下(以二叉樹為例):假定根節點(圖的任意節點可作為根節點)標記為 ,
(L) : 遞歸遍歷左子樹,並在節點 結束。
(R): 遞歸遍歷右子樹,並在節點 結束。
(N): 訪問節點 。
這些步驟可以以任意次序排列。如果(L)在(R)之前,則該過程稱為從左到右的遍歷;反之,則稱為從右到左的遍歷。根據訪問次序的不同,深度優先搜索可分為 pre-order、in-order、out-order以及post-order遍歷方式。
(a)檢查當前節點是否為空;
(b)展示根節點或當前節點數據;
(c)遞歸調用pre-order函數遍歷左子樹;
(d)遞歸調用pre-order函數遍歷右子樹。
pre-order遍歷屬於拓撲排序後的遍歷,父節點總是在任何子節點之前被訪問。該遍歷方式的圖示如下:
遍歷次序依次為:F -B -A-D- C-E-G- I-H.
(a)檢查當前節點是否為空;
(b)遞歸調用in-order函數遍歷左子樹;
(c)展示根節點或當前節點數據;
(d)遞歸調用in-order函數遍歷右子樹。
在二叉樹搜索中,in-order遍歷以排序順序訪問節點數據。該遍歷方式的圖示如下:
遍歷次序依次為:A -B - C - D - E - F - G -H-I
(a)檢查當前節點是否為空;
(b)遞歸調用out-order函數遍歷右子樹;
(c)展示根節點或當前節點數據;
(d)遞歸調用out-order函數遍歷左子樹。
該遍歷方式與LNR類似,但先遍歷右子樹後遍歷左子樹。仍然以圖2為例,遍歷次序依次為:H- I-G- F- B- E- D- C- A.
(a)檢查當前節點是否為空;
(b)遞歸調用post-order函數遍歷左子樹;
(c)遞歸調用post-order函數遍歷右子樹;
(d)展示根節點或當前節點數據。
post-order遍歷圖示如下:
遍歷次序依次為:A-C-E-D-B-H-I-G-F.
pre-order遍歷方式使用場景:用於創建樹或圖的副本;
in-order遍歷使用場景:二叉樹遍歷;
post-order遍歷使用場景:刪除樹
遍歷追蹤也稱樹的序列化,是所訪問根節點列表。無論是pre-order,in-order或是post-order都無法完整的描述樹特性。給定含有不同元素的樹結構,pre-order或post-order與in-order遍歷方式結合起來使用才可以描述樹的獨特性。
樹或圖形的訪問也可以按照節點所處的級別進行遍歷。在每次訪問下一層級節點之前,遍歷所在高層級的所有節點。BFS從根節點(圖的任意節點可作為根節點)出發,在移動到下一節點之前訪問所有相同深度水平的相鄰節點。
BFS的遍歷方法圖示如下:
遍歷次序依次為: F-B-G-A-D-I-C-E-H.
圖演算法相關的R包為igraph,主要包括圖的生成、圖計算等一系列演算法的實現。
使用方法:
參數說明:
示例:
結果展示:
DFS R輸出節點排序:
使用方法:
參數含義同dfs
示例:
結果展示:
BFS R輸出節點排序:
以尋找兩點之間的路徑為例,分別展示BFS及DFS的實現。圖示例如下:
示例:
輸出結果:
示例:
輸出結果:
[1] 維基網路: https://en.wikipedia.org/wiki/Tree_traversal
[2] GeeksforGeeks: https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/
[3] http://webdocs.cs.ualberta.ca/~holte/T26/tree-traversal.html
[4]Martin Broadhurst, Graph Algorithm: http://www.martinbroadhurst.com/Graph-algorithms.html#section_1_1
[5]igraph: https://igraph.org/r/doc/dfs.html
[6]igraph: https://igraph.org/r/doc/bfs.html
[7] Depth-First Search and Breadth-First Search in python: https://eddmann.com/posts/depth-first-search-and-breadth-first-search-in-python/