【图像分割】基于pcnn脉冲神经网络结合区域生长算法实现图像分割附matlab代码
1 簡介
1950s數字圖像處理產生,從此學術界對它的研究連綿不絕。十多年之后,數字圖像的處理被獨立出來成了一門課程。圖像分割技術是處理圖像的一種基礎技術,在圖像處理領域中占了重要地位,且在圖像工程、模式識別、計算機視覺等方面起著重要作用。本文正是以圖像分割為研究課題,以如何能更好地圖像進行省時而有效的分割為研究目的,提出了基于最大熵的脈沖耦合神經網絡(PulseCoupled Neural Networks,簡稱PCNN)的方法。眾所周知,有效的分割方法有利于理解圖像的本質和后續的研究工作等,因此本文分割方法的研究是具有一定意義的。傳統的處理圖像的分割問題的方法有:基于灰度級算術均值法、基于熵與直方圖法、基于最大類間方差法、基于邊緣的檢測分割法,基于閾值的分割法,基于邊界提取的分割法,基于區域的分割法,基于特定理論的分割法。同時,當然少不了產生的一些相關模型,如健壯尺度區域模型,二維經典C-V模型,尺度區域擬合模型,三維C-V模型,健壯統計三維C-V模型,幾何主動輪廓模型等。本文將出基于脈沖耦合神經網絡的方法。此方法對上述分割數字圖像時的不足具有一定的彌補作用。用PCNN方法分割數字圖像的模型中,以神經元為單元,構成二維的一層的神經元列。PCNN模型中神經元的數目一致于像素數目,每個神經元一一對應于每個像素。根據PCNN的脈沖傳播特性而引起的同步脈沖現象來實現圖像分割。
2 部分代碼
function J = My_RegionGrowing(I, init_pos, reg_maxdist) [row, col] = size(I); % 輸入圖像的維數 J = zeros(row, col); % 輸出 x0 = init_pos(1); % 初始點 y0 = init_pos(2); reg_mean = I(x0, y0); % 生長起始點灰度值 J(x0, y0) = 1; % 生長起始點設置為白色 reg_sum = reg_mean; % 符合生長條件的灰度值總和 reg_num = 1; % 符合生長條件的點的個數 count = 1; % 每次判斷周圍八個點中符合條件的數目 reg_choose = zeros(row*col, 2); % 記錄已選擇點的坐標 reg_choose(reg_num, :) = init_pos; num = 1; % 第一個點 while count > 0 s_temp = 0; % 周圍八個點中符合條件的點的灰度值總和 count = 0; for k = 1 : num % 對新增的每個點遍歷,避免重復 i = reg_choose(reg_num - num + k, 1); j = reg_choose(reg_num - num +k, 2); if J(i, j) == 1 && i > 1 && i < row && j > 1 && j < col % 已確定且不是邊界上的點 % 八鄰域 for u = -1 : 1 for v = -1 : 1 % 未處理且滿足生長條件的點 if J(i + u, j + v) == 0 && abs(I(i + u, j + v) - reg_mean) <= reg_maxdist J(i + u, j + v) = 1; % 對應點設置為白色 count = count + 1; reg_choose(reg_num + count, :) = [i + u, j + v]; s_temp = s_temp + I(i + u, j + v); % 灰度值存入s_temp中 end end end end end num = count; % 新增的點 reg_num = reg_num + count; % 區域內總點數 reg_sum = reg_sum + s_temp; % 區域內總灰度值 reg_mean = reg_sum / reg_num; % 區域灰度平均值 end??3 仿真結果
4 參考文獻
[1]黃國峰. 基于脈沖耦合神經網絡的圖像分割算法研究[D]. 西安電子科技大學.
博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。
部分理論引用網絡文獻,若有侵權聯系博主刪除。
5 代碼下載
總結
以上是生活随笔為你收集整理的【图像分割】基于pcnn脉冲神经网络结合区域生长算法实现图像分割附matlab代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用ARCGIS制作MIKE21边界文件
- 下一篇: 2021最新一线互联网大厂常见高并发面试