** | 特徵 | 屋頂坡度 | 雨水豐沛地區 | 屋面類型 | ** |
---|---|---|---|---|---|
高,稱為幾分水 | 是,坡度大 | 傳統青瓦 | |||
低,稱作起三分的水 | 否,坡度小 | 石棉瓦、彩鋼瓦 |
分水嶺算法
原理
分水嶺概念:將圖像視為地形,具有三維座標(空間和強度)。
* 局部最小值點:盆地最低點
* 盆地其他點:水滴彙聚到局部最小點
* 分割點:盆地交接點,水滴概率流向任一盆地
* 分水嶺:區域最小值點的匯水盆地集合
* 分水線:分水嶺的邊界,出現在水位上升時各水壩頂部的交線
水壩構建
逐層淹沒地形,在灰度處理下,低於當前層的像素被淹沒。
- 分離水域:水位上升過程,相鄰水域之間可能由距離變近而連接。
- 膨脹交點:對連接水域進行膨脹,尋找交點構建堤壩。
- 適當連通:堤壩位置應位於當前淹沒區域內。
最小深度控制過度分割
- 聚水盆深度:海拔最低點與水面高度差值
- 合併條件:水域連接時,若深度均低於最小深度,則合併。
- 控制分割程度:調整最小深度。
OpenCV 實現
- 標記輸入:使用 findContours 標記需要分割的區域,負值表示背景。
- 分水嶺:
- 輸入:原圖、標記圖
- 輸出:輸出結果,標記像素為“種子”值,區域間為 -1。
應用
- 分割區域,例如圖像中的物體、細胞組織。
- 節點距離圖像分割,例如判斷神經細胞形態。
- 醫療影像分割:病灶檢測、器官分離。
1分水算法
1分水算法是一種常見的空間分割算法,用於在計算幾何中將數據點分成不同的區域。它通過一個簡單的遞迴過程將點分組成越來越小的集合,直到每個集合中的點都滿足一定的距離條件。
演算法流程
1分水算法的流程如下:
- 選取一個初始點作為羣集中心。
- 找出與羣集中心距離小於閾值 D 的所有點,並將這些點分配到該羣集。
- 將未分配的點分配到距離最近的羣集。
- 如果任何羣集包含的點超過閾值 N,則將該羣集進一步分割。
以下表格總結了 1 分水算法的流程:
步驟 | 描述 |
---|---|
1 | 選擇初始中心點 |
2 | 分配距離小於 D 的點到羣集 |
3 | 分配未分配的點到最近羣集 |
4 | 分割包含超過 N 個點的羣集 |
時間複雜度
1 分水算法的時間複雜度取決於輸入點的數量 n 以及距離閾值 D 和羣集大小閾值 N。以下是算法不同場景下的時間複雜度:
場景 | 時間複雜度 |
---|---|
n 大,D 和 N 相對較小 | O(n log n) |
n 大,D 和 N 相對較大 | O(n^2) |
應用
1 分水算法廣泛應用於許多領域,包括:
- 影像處理
- 模式識別
- 數據分析
- 地理資訊系統
優點和缺點
優點:
- 簡單易於實現
- 能夠產生羣集邊界
- 適用於各種距離指標
缺點:
延伸閲讀…
請問屋面幾分水怎麼計算呢?另外有公式嗎?
房屋分水怎麼計算?自建房瓦屋面分水 – Bilibili
- 結果可能依賴於初始中心點的選擇
- 在某些情況下時間複雜度較高
- 可能產生不同大小的羣集