姓名:崔少杰 ? ? ? 學(xué)號(hào):16040510021
轉(zhuǎn)載自:http://www.reibang.com/p/973e4ce0e975=有修改
【嵌牛導(dǎo)讀】:深度不連續(xù)熬丧,表面方向不連續(xù)潮改,物質(zhì)屬性變化悔雹,場(chǎng)景照明變化俯树,優(yōu)秀的分割算法可以大幅度減少數(shù)據(jù)量
【嵌牛鼻子】:OpenCV霞势、經(jīng)典分割方法
【嵌牛提問】:圖像中的顯著屬性變化怎么反映了該屬性的重要性和影響甘磨?
【嵌牛正文】:基于邊緣分割
實(shí)際場(chǎng)景中圖像邊緣往往是各種類型的邊緣及模糊化后的結(jié)果組合悯舟,且實(shí)際信號(hào)噪聲較多。
噪聲和邊緣都屬于高頻噪聲溯香,難用頻帶取舍鲫构。
邊界分割法
點(diǎn)+線+邊緣檢測(cè)
可以加一些圖像增強(qiáng)或腐蝕膨脹等形態(tài)學(xué)處理,強(qiáng)化或弱化目標(biāo)邊界玫坛,去噪
1_1.png
一階算子介紹
Roberts2*2四鄰域差分尋找邊緣無平滑芬迄,噪聲較敏感
1_1_roberts.png
Sobel/Prewitt3*3鄰域卷積梯度微分,處理垂直和水平邊緣處理灰度漸變低噪聲,定位校準(zhǔn)
1_1_sobel.png
Log先平滑禀梳,拉氏變換后求二階積分再卷積消除尺度小于σ的圖像強(qiáng)度變化,計(jì)算量小肠骆,易丟失細(xì)節(jié)
1_1_log.png
Canny準(zhǔn)高斯函數(shù)做平滑算途,帶方向一階微分算子定位導(dǎo)數(shù)最大值檢測(cè)弱邊緣效果很好,運(yùn)算較慢
1_1_canny.png
檢測(cè)完提取
物體邊界一般是線蚀腿,不是單獨(dú)的點(diǎn)嘴瓤。邊界表示使圖像表示更簡(jiǎn)介,方便高層次理解
難點(diǎn)在于邊界分叉缺損莉钙,不是閉合連通邊界圖廓脆,梯度大的點(diǎn)也不一定真是邊緣點(diǎn)
可以加一些開閉運(yùn)算,形態(tài)學(xué)梯度磁玉,頂帽黑帽,顆粒分析停忿,流域變換,骨架提取蚊伞,擊中擊不中變換等形態(tài)學(xué)處理席赂,強(qiáng)化或弱化目標(biāo)邊界,強(qiáng)化物體結(jié)構(gòu)
數(shù)學(xué)形態(tài)學(xué)是一門建立在嚴(yán)格數(shù)學(xué)理論基礎(chǔ)上的學(xué)科时迫。象方差颅停,弦長(zhǎng)分布,周長(zhǎng)測(cè)量掠拳,顆粒統(tǒng)計(jì)等 統(tǒng)稱為擊中擊不中變換
數(shù)學(xué)形態(tài)學(xué)理論基礎(chǔ)是擊中擊不中變換癞揉,開閉運(yùn)算,布爾模型和紋理分析器
方法介紹
簡(jiǎn)單連接相鄰點(diǎn)邊緣強(qiáng)度差和邊緣方向小于閾值時(shí)溺欧,可以連接喊熟。無則停止,多則取差最小的點(diǎn)
啟發(fā)式搜索從多種可能路徑中選優(yōu)胧奔,評(píng)價(jià)函數(shù)打分
曲線擬合若邊緣點(diǎn)很稀疏逊移,可以用分段性或高階樣條曲線來擬合這些點(diǎn),形成邊界龙填。擬合方法多為均方誤差最小準(zhǔn)則
其他還有hough變換胳泉,圖搜索,動(dòng)態(tài)規(guī)劃等
閾值分割
1_2.png
閾值分割算法實(shí)際上就是設(shè)定閾值的矩陣二值化岩遗,所以這個(gè)輸入的灰度矩陣可以變成以0:255為范圍的任何其他矩陣
比如速度矩陣扇商,深度矩陣,明度矩陣等等以及其他具有統(tǒng)計(jì)特性的矩陣
利用圖像中要提取目標(biāo)和背景在某一特性上的差異宿礁,選取合適閾值進(jìn)行分割案铺。
單閾值分割方法(全局)
多閾值分割方法(局部)
基于像素值/區(qū)域性質(zhì)/坐標(biāo)位置的閾值分割方法
根據(jù)分割方法所具有的特征或準(zhǔn)則,可分為直方圖峰谷法/最大類空間方差法/最大熵法/模糊集法/特征空間聚類法/基于過渡區(qū)的閾值選取法等
直方圖閾值的雙峰法
迭代法(最佳閥值分割迭代法 k-means)
大律法(otsu閾值分割算法)
類內(nèi)方差最小方差法
最小錯(cuò)誤概率分類法
基于熵的二值化方法
局部自適應(yīng)
基于區(qū)域分割
1_3.png
區(qū)域生長(zhǎng)法
區(qū)域生長(zhǎng)的一致性描述是區(qū)域生長(zhǎng)法的基本準(zhǔn)則梆靖,一般是灰度控汉,也可以考慮顏色/紋理/形狀等其他屬性
基于閾值的方法是基于單個(gè)點(diǎn)的特點(diǎn)笔诵。基于區(qū)域的方法考慮到相鄰點(diǎn)的一致性姑子。
需要確定:
種子像素乎婿,一般可以根據(jù)聚類中心作為種子中心,也可以設(shè)定一個(gè)閾值街佑,在此閾值內(nèi)的點(diǎn)為種子點(diǎn)
生長(zhǎng)方法和每次生長(zhǎng)后這個(gè)區(qū)域的一致性準(zhǔn)則谢翎,如灰度差小于閾值,簡(jiǎn)單的生長(zhǎng)方法沐旨,區(qū)域的所有8鄰域點(diǎn)森逮。
若該點(diǎn)加入后,該區(qū)域滿足一致性準(zhǔn)則磁携,則加入褒侧。
當(dāng)兩個(gè)區(qū)域滿足一定準(zhǔn)則時(shí),合并兩個(gè)區(qū)域颜武。該準(zhǔn)則可以考慮兩個(gè)區(qū)域分別的均值和方差璃搜。
如果沒有預(yù)先確定的種子點(diǎn),可采用一般步驟:
1.用某種準(zhǔn)則把圖像分割成許多小區(qū)域
2.定義合并相鄰區(qū)域的準(zhǔn)則鳞上,需要注意區(qū)域合并得到的結(jié)果受區(qū)域合并順序影響
3.按照合并準(zhǔn)則合并所有相鄰的區(qū)域这吻,如果沒有再能夠合并的塊后停止。
不同的分割方法和合并準(zhǔn)則適應(yīng)不同情況篙议。相鄰區(qū)域特征值之間的差異是計(jì)算強(qiáng)度的一個(gè)尺度唾糯。
強(qiáng)邊界保留,弱邊界消除鬼贱,相鄰區(qū)域合并移怯。計(jì)算是一個(gè)迭代,每一步重新計(jì)算區(qū)域成員隸屬關(guān)系这难,并消除弱邊界舟误。無弱邊界消除時(shí)合并結(jié)束。
計(jì)算開銷較大姻乓,但綜合利用的話對(duì)自然場(chǎng)景分割效果相對(duì)最好嵌溢。
生長(zhǎng)準(zhǔn)則:
灰度差準(zhǔn)則
1.dd 掃描圖像,找出無隸屬的像素
2.檢查鄰域像素蹋岩,逐個(gè)比較赖草,灰度差小于閾值即合并
(對(duì)種子點(diǎn)依賴較大,可以求所有鄰接區(qū)域平均灰度差剪个,合并差小的鄰接區(qū)域/
還可直接用像素所在區(qū)域平均灰度值代替此像素灰度值進(jìn)行比較秧骑。)
3.以新合并的像素為中心,重復(fù)步驟2,直至區(qū)域不能進(jìn)一步擴(kuò)張
4.返回步驟一乎折,重復(fù)绒疗,至找不到無隸屬像素,結(jié)束生長(zhǎng)笆檀。(可以自己設(shè)定終止準(zhǔn)則)
灰度分布統(tǒng)計(jì)準(zhǔn)則
以灰度分布相似性座位上生長(zhǎng)準(zhǔn)則來決定區(qū)域的合并忌堂,步驟如下:
1.把圖像分為互不重疊的小區(qū)域
2.比較鄰接區(qū)域的累積灰度直方圖很據(jù)灰度分布相似性進(jìn)行區(qū)域合并
3.設(shè)定終止準(zhǔn)則,重復(fù)步驟2將各區(qū)域依次合并直至滿足終止準(zhǔn)則
灰度分布相似性檢測(cè)方法 | Kolmogorov-Smirnov {maxz(h1(z)-h2(z))} | Smoothed-Difference{Σz|h1(z)-h2(z)|}
區(qū)域形狀準(zhǔn)則
方法1:把圖像分割成灰度固定的區(qū)域酗洒,設(shè)兩相鄰區(qū)域周長(zhǎng)分別位p1p2,把兩區(qū)域共同邊界線兩側(cè)灰度差小于給定值的部分設(shè)為L(zhǎng)枷遂,若L/min(p1,p2)>T1則合并兩區(qū)域樱衷。
方法2:把圖像分割成灰度固定的區(qū)域,設(shè)兩鄰接區(qū)域共同邊界長(zhǎng)度位B酒唉,把兩區(qū)域共同邊界線兩側(cè)灰度差小于給定值部分的長(zhǎng)度設(shè)為L(zhǎng)矩桂,若L/B>T2則合并
區(qū)域分裂
原始圖像????模糊濾波????分裂合并???分裂擴(kuò)張
1_3_split.png
區(qū)域分裂與區(qū)域合并相反
先假設(shè)整個(gè)圖像是一個(gè)對(duì)象,不滿足一致性準(zhǔn)則痪伦,則分裂(一般是均分成4個(gè)子圖像)侄榴,重復(fù),直至所有區(qū)域滿足一致性準(zhǔn)則网沾。像正方形的四叉樹分裂
區(qū)域分裂+合并
從中間層開始處理癞蚕,按照一致性準(zhǔn)則該分裂分裂該合并合并。起點(diǎn)是四叉樹的某一層節(jié)點(diǎn)辉哥。
邊緣+區(qū)域 分割
通過邊緣限制桦山,避免區(qū)域過分割,通過區(qū)域分割補(bǔ)充漏檢邊緣醋旦。
如先進(jìn)行邊緣檢測(cè)與連接恒水,在比較相鄰區(qū)域的特征(灰度均值,方差等)饲齐,若相近則合并钉凌。
對(duì)原始圖像分別進(jìn)行邊緣檢測(cè)和區(qū)域增長(zhǎng),獲得邊緣圖和區(qū)域分段圖后捂人,再按一定準(zhǔn)則融合御雕,得到最終分割結(jié)果。
連通域標(biāo)記
基于邊緣的方法根據(jù)所得閉合邊界先慷,采用邊界跟蹤和內(nèi)部填充的方法饮笛。
基于區(qū)域的方法一般采用連通性分析方法,按照一定的順序把連通的像素用相同的序號(hào)標(biāo)注
1.把所有像素點(diǎn)放到待處理點(diǎn)集合A中论熙。
2.如果A空則結(jié)束福青。否則從A中任意移出一點(diǎn)作為連通域a(用集合表示)的初始點(diǎn)
3.在A中尋找所有與a連通的點(diǎn),并移到a中,若沒有找到无午,重復(fù)2媒役,尋找下一個(gè)連通域。
4.重復(fù)3宪迟,迭代尋找新的連通點(diǎn)酣衷。
SaliencyCut
1_4_saliency.png
Global Contrast Based Salient Region Detection
_南開程明明download
特殊工具分割
小波
馬爾科夫隨機(jī)場(chǎng)
遺傳算法
神經(jīng)網(wǎng)絡(luò)/Kmeans/主動(dòng)輪廓模型(能量函數(shù))
運(yùn)動(dòng)分割
差分(時(shí)空灰度梯度)光流(運(yùn)動(dòng)場(chǎng))
參考 :圖像分割
PCL
因?yàn)榫S度的增加,是的分割成為三維圖像對(duì)比二維圖像的最大優(yōu)勢(shì)次泽。使得最優(yōu)分割成為可能
Ransac算法
隨機(jī)采樣一致,找平面,找線,找圓柱等 可以處理噪聲較多的情況
2_1.png
使用方法:
//創(chuàng)建一個(gè)模型參數(shù)對(duì)象穿仪,用于記錄結(jié)果
pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);
//inliers表示誤差能容忍的點(diǎn) 記錄的是點(diǎn)云的序號(hào)
pcl::PointIndices::Ptr inliers (new pcl::PointIndices);
// 創(chuàng)建一個(gè)分割器
pcl::SACSegmentation seg;
// Optional
seg.setOptimizeCoefficients (true);
// Mandatory-設(shè)置目標(biāo)幾何形狀
seg.setModelType (pcl::SACMODEL_PLANE);
//分割方法:隨機(jī)采樣法
seg.setMethodType (pcl::SAC_RANSAC);
//設(shè)置誤差容忍范圍
seg.setDistanceThreshold (0.01);
//輸入點(diǎn)云
seg.setInputCloud (cloud);
//分割點(diǎn)云
seg.segment (*inliers, *coefficients);
2_1_youtube.png
鄰近信息
kdTree & OcTree
搜索策略,建立相鄰關(guān)系
#include
#include
//創(chuàng)建kdtree 結(jié)構(gòu)
pcl::KdTreeFLANN kdtree;
//傳入點(diǎn)云
kdtree.setInputCloud (cloud);
//設(shè)置輸入點(diǎn)
pcl::PointXYZ searchPoint;
//k鄰近搜索
int K = 10;
//設(shè)置兩個(gè)容器,第一個(gè)放點(diǎn)的標(biāo)號(hào)意荤,第二個(gè)點(diǎn)到SearchPoint的距離
std::vector pointIdxNKNSearch(K);
std::vector pointNKNSquaredDistance(K);
//進(jìn)行搜索啊片,注意,此函數(shù)有返回值>0為找到玖像,<0則沒找到
kdtree.nearestKSearch (searchPoint, K, pointIdxNKNSearch, pointNKNSquaredDistance)
//? ? 基于距離的搜索? ? //
//兩個(gè)未知大小的容器紫谷,作用同上
std::vector pointIdxRadiusSearch;
std::vector pointRadiusSquaredDistance;
// 搜索半徑
float radius = 3;
//搜索,效果同上
kdtree.radiusSearch (searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance)
歐氏距離
分割,可以用半徑做濾波,刪除離群點(diǎn)
//被分割出來的點(diǎn)云團(tuán)(標(biāo)號(hào)隊(duì)列)
std::vector cluster_indices;
//歐式分割器
pcl::EuclideanClusterExtraction ec;
ec.setClusterTolerance (0.02); // 2cm
ec.setMinClusterSize (100);
ec.setMaxClusterSize (25000);
//搜索策略樹
ec.setSearchMethod (tree);
ec.setInputCloud (cloud_filtered);
ec.extract (cluster_indices);
區(qū)域增長(zhǎng)
可以自定義準(zhǔn)則,如法線,曲率,顏色,距離等等
2_2_region_chair.png
2_2_region_corridor.png
//一個(gè)點(diǎn)云團(tuán)隊(duì)列捐寥,用于存放聚類結(jié)果
std::vector clusters;
//區(qū)域生長(zhǎng)分割器
pcl::RegionGrowing reg;
//輸入分割目標(biāo)
reg.setSearchMethod (tree);
reg.setNumberOfNeighbours (30);
reg.setInputCloud (cloud);
//reg.setIndices (indices);
reg.setInputNormals (normals);
//設(shè)置限制條件及先驗(yàn)知識(shí)
reg.setMinClusterSize (50);
reg.setMaxClusterSize (1000000);
reg.setSmoothnessThreshold (3.0 / 180.0 * M_PI);
reg.setCurvatureThreshold (1.0);
reg.extract (clusters);
minCut算法
圖論
need-to-insert-img
2_3.png
超體聚類
類似于超像素的概念
超體聚類八叉樹劃分
2_4.png
不同晶體間的鄰接關(guān)系
need-to-insert-img
2_4_super_tree.png
基于凹凸性
根據(jù)超體聚類之后不同的晶體計(jì)算凹凸關(guān)系,進(jìn)行分割
need-to-insert-img
2_5.png
只允許區(qū)域跨越凸邊增長(zhǎng)
need-to-insert-img
2_5_convex.png
完美效果...
need-to-insert-img
2_5_convex_perfect.png
基于形態(tài)學(xué)
need-to-insert-img
2_6.png