目標:黑色蓋板成像後,黑色蓋板區域和白色背景區域會形成一段灰色的過渡帶,過渡帶的灰度值範圍不可控,且變化較大,對後期的檢測有不利影響,使用固定閾值或者自適應閾值等二值化方法對過渡帶區域去除效果不好。最後採用k均值聚類的方法進行過渡帶去除。
【步驟一】生成取樣patch,對每個patch進行k-means聚類,聚為三類,過渡帶為畫素數量最少的一類。統計該類的灰度值範圍。
vector
imagecluster(const mat &image,int clustercounts)
}//聚類
kmeans(pixels, clustercounts, labels, termcriteria(termcriteria::eps + termcriteria::max_iter, 10, 0), 5, kmeans_pp_centers);
//尋找過渡帶區域的類別數(過渡帶區域的畫素數目最小,利用標籤的直方圖尋找)
int his[3]; his[0] = 0; his[1] = 0; his[2] = 0;
for (int i = 0; i < rows*cols; i++)
int minno = 0;
int minval = int_max;
for (int i = 0; i < 3; i++)
}//在過渡帶區域上遍歷尋找灰度值範圍
for (int i = 0; i < rows; ++i)
if (temv > zonegray[1])}}
}return zonegray;
}
【步驟二】得到過渡帶灰度範圍後,對所有輪廓patch都進行去除過渡帶操作:將灰度值在過渡帶灰度值範圍內的畫素值的灰度值設為設定值。
int graychange(mat &image, vector
zonegray, int changegray)}}
return
0;}
vue專案開發中踩過的坑
一 路由 這兩天移動端的同事在研究vue,跟我說看著我的專案做的,子路由訪問的時候是空白的,我第一反應是,不會模組沒載入進來吧,還是。此處省略一千字。廢話不多說上 路由 redirect ordermanger children element的選單元件 問題描述 1 根據以上 訪問list路由時訪...
從前序 中序或者後序 中序序列中恢復二叉樹過程
給出前序遍歷和中序遍歷,如何繪製出二叉樹 如果給出遍歷產生的一串字元,不容易確定各個字元在樹中的具體位置,因而需要兩個遍歷串相結合才能畫出一棵二叉樹。如,給出前序遍歷adfghklpqrwz,中序遍歷gfhkdlawrqpz。其具體尋找過程如下 其中矩形內表示當前節點的左右子樹的元素,圓圈內為當前節...
深度學習篇 神經網路中的調優二,防止過擬合
一 前述 二 l1,l2正則防止過擬合 使用l1和l2正則去限制神經網路連線的weights權重,限制更小 1 對於一層時可以定義如下 一種方式去使用tensorflow做正則是加合適的正則項到損失函式,當一層的時候,可以如下定義 2 對於多層時可以定義如下 可是如果有很多層,上面的方式不是很方便,...