110 likes | 296 Views
程式規劃. Speaker: Jhen -Yu. 前情提要. int m_nCellX ; // X 座標 int m_nCellY ; // Y 座標 int m_nDTValue ; // 與邊界的最 短距離 int m_nScanRange ; // 搜尋圈數 double m_dbSkeletonAngle ; // 撞擊角度 int m_nBinaryValue ; // 二元值 int m_nCellType ; // 1: 物體 0: 背景 2: 邊界 int m_nSkeletonType ; // 1: 骨架 0: 非骨架
E N D
程式規劃 Speaker: Jhen-Yu
前情提要 intm_nCellX; // X 座標 intm_nCellY; // Y 座標 intm_nDTValue; // 與邊界的最短距離 intm_nScanRange; // 搜尋圈數 double m_dbSkeletonAngle; // 撞擊角度 intm_nBinaryValue; // 二元值 intm_nCellType; // 1:物體 0:背景 2:邊界 intm_nSkeletonType; // 1:骨架 0:非骨架 intm_nMarkType; // 用於修剪中的標記 intm_nVectorPoint[4]; // 合成向量的來源 intm_nVectorDir[5]; // 流動方向 // 搜尋過程中儲存的所有邊界點 vector<int> m_vecCandBoundX; vector<int> m_vecCandBoundY; // 用於角度計算的邊界點 vector<int> m_vecFiltBoundX; vector<int> m_vecFiltBoundY; • Using class • 記錄的變數過多 • 考量記憶體及效率層面 • 須簡化 • Using struct • 只保留幾個主要的變數 • Ex: DTValue、Angle、Directions... 由 Cell(Class) 所記錄的變數
前情提要 • 原程式 • 由 Cell 去記錄所有變數 • 可以隨時存取 • 演算法每一個步驟都是分開處理 • 新的平台 • 變數簡化所產生的問題 • 演算法中數個步驟要連在一起做 • 參數傳遞
影像載入及邊界點定義 版本1: 分為兩個buffer,原始影像 + 邊界狀態 Buffer 2: Boundary type 外邊界 Buffer 2: Boundary type 內邊界 Buffer 1: Original image
方向性的距離轉換 • 目的 • 定義DT值 • 找出最大角度 • 規劃流動方向 • 考慮新增變數 • nComponentNum • 過濾用 • 角度計算用 邊界點搜尋 DT值 Component Com.個數 Using Com. 角度計算 Angle值 Directly 流動方向 Directions
特徵點定義 • 所需變數 • dbSkeletonAngle • 角度門檻值 • Ex: 150∘ • 考慮新增變數 • bSkeleton • 延伸過程所產生的骨架 • 角度普遍小於門檻值 • 辨別的問題 intm_nDTValue; // 與邊界的最短距離 double m_dbSkeletonAngle; // 撞擊角度 intm_nVectorDir[5]; // 流動方向 intm_nComponentNum; // Com.個數 boolm_nbSkeleton; // 是否為骨架 由 Cell(Struct) 所記錄的變數
特徵點篩選 • 所需變數 • bSkeleton(骨架狀態) • nDTValue(距離) • nComponentNum(Com個數) • 現有的兩種方式 • DTND(常態分佈) • DTCOM
特徵點延伸 • 所需變數 • bSkeleton(骨架狀態) • nVectorDir[5](延伸方向) • dbSkeletonAnlge(角度)
特徵點修剪 • 所需變數 • bSkeleton(骨架狀態) • dbSkeletonAnlge(角度) • …..
影像載入 邊界點定義 程式流程 邊界點搜尋 DTValue • 變數 • 流程 Com.個數 Component Using Com. 角度計算 Angle Value Directly 流動方向 Directions 特徵點定義 bSkeleton 特徵點篩選 intm_nDTValue; // 與邊界的最短距離 double m_dbSkeletonAngle; // 撞擊角度 intm_nVectorDir[5]; // 流動方向 intm_nComponentNum; // Com.個數 boolm_nbSkeleton; // 是否為骨架 特徵點延伸 由 Cell(Struct) 所記錄的變數 特徵點修剪