如何利用PCNN脉冲神经网络与区域生长算法实现图像分割并附Matlab代码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1068个文字,预计阅读时间需要5分钟。
1. 简介数字图像处理产生于1950s,自此学术界对其研究连绵不断。十多年后,数字图像处理独立成为一门课程。图像分割技术是处理图像的一种基础技术,在图像处理领域中被广泛应用。
1 简介
1950s数字图像处理产生,从此学术界对它的研究连绵不绝。十多年之后,数字图像的处理被独立出来成了一门课程。图像分割技术是处理图像的一种基础技术,在图像处理领域中占了重要地位,且在图像工程、模式识别、计算机视觉等方面起着重要作用。本文正是以图像分割为研究课题,以如何能更好地图像进行省时而有效的分割为研究目的,提出了基于最大熵的脉冲耦合神经网络(PulseCoupled Neural Networks,简称PCNN)的方法。众所周知,有效的分割方法有利于理解图像的本质和后续的研究工作等,因此本文分割方法的研究是具有一定意义的。传统的处理图像的分割问题的方法有:基于灰度级算术均值法、基于熵与直方图法、基于最大类间方差法、基于边缘的检测分割法,基于阈值的分割法,基于边界提取的分割法,基于区域的分割法,基于特定理论的分割法。同时,当然少不了产生的一些相关模型,如健壮尺度区域模型,二维经典C-V模型,尺度区域拟合模型,三维C-V模型,健壮统计三维C-V模型,几何主动轮廓模型等。本文将出基于脉冲耦合神经网络的方法。此方法对上述分割数字图像时的不足具有一定的弥补作用。用PCNN方法分割数字图像的模型中,以神经元为单元,构成二维的一层的神经元列。PCNN模型中神经元的数目一致于像素数目,每个神经元一一对应于每个像素。根据PCNN的脉冲传播特性而引起的同步脉冲现象来实现图像分割。
编辑
2 部分代码
functionJ=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;%第一个点whilecount>0s_temp=0;%周围八个点中符合条件的点的灰度值总和count=0;fork=1:num%对新增的每个点遍历,避免重复i=reg_choose(reg_num-num+k,1);j=reg_choose(reg_num-num+k,2);ifJ(i,j)==1&&i>1&&i<row&&j>1&&j<col%已确定且不是边界上的点%八邻域foru=-1:1forv=-1:1%未处理且满足生长条件的点ifJ(i+u,j+v)==0&&abs(I(i+u,j+v)-reg_mean)<=reg_maxdistJ(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中endendendendendnum=count;%新增的点reg_num=reg_num+count;%区域内总点数reg_sum=reg_sum+s_temp;%区域内总灰度值reg_mean=reg_sum/reg_num;%区域灰度平均值end3 仿真结果
编辑
4 参考文献
[1]黄国峰. 基于脉冲耦合神经网络的图像分割算法研究[D]. 西安电子科技大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
5 代码下载
编辑
本文共计1068个文字,预计阅读时间需要5分钟。
1. 简介数字图像处理产生于1950s,自此学术界对其研究连绵不断。十多年后,数字图像处理独立成为一门课程。图像分割技术是处理图像的一种基础技术,在图像处理领域中被广泛应用。
1 简介
1950s数字图像处理产生,从此学术界对它的研究连绵不绝。十多年之后,数字图像的处理被独立出来成了一门课程。图像分割技术是处理图像的一种基础技术,在图像处理领域中占了重要地位,且在图像工程、模式识别、计算机视觉等方面起着重要作用。本文正是以图像分割为研究课题,以如何能更好地图像进行省时而有效的分割为研究目的,提出了基于最大熵的脉冲耦合神经网络(PulseCoupled Neural Networks,简称PCNN)的方法。众所周知,有效的分割方法有利于理解图像的本质和后续的研究工作等,因此本文分割方法的研究是具有一定意义的。传统的处理图像的分割问题的方法有:基于灰度级算术均值法、基于熵与直方图法、基于最大类间方差法、基于边缘的检测分割法,基于阈值的分割法,基于边界提取的分割法,基于区域的分割法,基于特定理论的分割法。同时,当然少不了产生的一些相关模型,如健壮尺度区域模型,二维经典C-V模型,尺度区域拟合模型,三维C-V模型,健壮统计三维C-V模型,几何主动轮廓模型等。本文将出基于脉冲耦合神经网络的方法。此方法对上述分割数字图像时的不足具有一定的弥补作用。用PCNN方法分割数字图像的模型中,以神经元为单元,构成二维的一层的神经元列。PCNN模型中神经元的数目一致于像素数目,每个神经元一一对应于每个像素。根据PCNN的脉冲传播特性而引起的同步脉冲现象来实现图像分割。
编辑
2 部分代码
functionJ=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;%第一个点whilecount>0s_temp=0;%周围八个点中符合条件的点的灰度值总和count=0;fork=1:num%对新增的每个点遍历,避免重复i=reg_choose(reg_num-num+k,1);j=reg_choose(reg_num-num+k,2);ifJ(i,j)==1&&i>1&&i<row&&j>1&&j<col%已确定且不是边界上的点%八邻域foru=-1:1forv=-1:1%未处理且满足生长条件的点ifJ(i+u,j+v)==0&&abs(I(i+u,j+v)-reg_mean)<=reg_maxdistJ(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中endendendendendnum=count;%新增的点reg_num=reg_num+count;%区域内总点数reg_sum=reg_sum+s_temp;%区域内总灰度值reg_mean=reg_sum/reg_num;%区域灰度平均值end3 仿真结果
编辑
4 参考文献
[1]黄国峰. 基于脉冲耦合神经网络的图像分割算法研究[D]. 西安电子科技大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
5 代码下载
编辑

