❶ MATLAB 图像分割的 分水岭算法 的源代码,麻烦有的人发一份给我,谢谢
直方图均衡化也是非线性量化的一种吧,网上找到的,作者写的非常详细。
% 数字图像处理程序作业
% 本程序能将JPG格式的彩色图像文件灰度化并进行直方图均衡
%
% 输入文件:PicSample.jpg 待处理图像
% 输出文件:PicSampleGray.bmp 灰度化后图像
% PicEqual.bmp 均衡化后图像
%
% 输出图形窗口说明
% figure NO 1 待处理彩色图像
% figure NO 2 灰度化后图像
% figure NO 3 直方图
% figure NO 4 均衡化后直方图
% figure NO 5 灰度变化曲线
% figure NO 6 均衡化后图像
% 1, 处理的图片名字要为 PicSample.jpg
% 2, 程序每次运行时会先清空workspace
% 作者;archiless lorder
clear all
%一,图像的预处理,读入彩色图像将其灰度化
PS=imread('PicSample.jpg'); %读入JPG彩色图像文件
imshow(PS) %显示出来 figure NO 1
title('输入的彩色JPG图像')
imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存
PS=rgb2gray(PS); %灰度化后的数据存入数组
figure,imshow(PS) %显示灰度化后的图像,也是均衡化前的样品 figure NO 2
title('灰度化后的图像')
%二,绘制直方图
[m,n]=size(PS); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:255,GP,'g') %绘制直方图 figure NO 3
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
%三,直方图均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i); %计算Sk
end
end
S2=round(S1*256); %将Sk归到相近级的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率
end
figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图 figure NO 4
title('均衡化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
figure,plot(0:255,S2,'r') %显示灰度变化曲线 figure NO 5
legend('灰度变化曲线')
xlabel('原图像灰度级')
ylabel('均衡化后灰度级')
%四,图像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像 figure NO 6
title('均衡化后图像')
imwrite(PA,'PicEqual.bmp');
❷ 有关分水岭算法的书
我以前在梦境之中去的就是分水岭,那是把一个河流给分成两条的牌岭,我觉得非常奇怪,那个牌岭横跨一条河流,而另一条河流则流向他处,牌岭两边都有一个地下通道楼梯口,看上去有些稀奇,不知拍零下为何物,不过牌岭旁的油菜花也是非常了令人向往的,我觉得太COOL了,但要通向下面的楼梯时,就这样结束了,非常遗憾没有把它继续下去,这是我梦境之中的分水岭,然而你说的书可能是涉及一些关于把水分流的自然现象或者是说关于分水的另一种科学论断。。。
❸ OpenCV 如何进行二值图像的分水岭算法
没用过。不过从程序看,处理彩色图像先要转成灰色图像,处理完再转回彩色。转换函数是cvCvtColor(...),参数CV_BGR2GRAY 是RGB到grey, 参数 CV_GRAY2BGR 是grey 到RGB.
处理结果是彩色的,则转灰色就是了:
cvCvtColor( inputImg, grayImg, CV_BGR2GRAY);
❹ MATLAB的分水岭算法
楼上的到处都是这句话,无敌了你
❺ 如何处理分水岭算法中的过分割问题
克服分水岭算法过分割的方法_网络文库
http://wenku..com/link?url=uZL4gmBQUc4mUH4WcixSFwsGd3yLF__
可以参考一下这个文章
❻ 分水岭算法的产生与发展过程
分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L.
Vincent为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识
❼ 图像分割中分水岭算法的流程是什么我论文答辩要做10分钟左右的讲解,给的越多越好,谢谢
分水岭算法的概念及原理
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L. Vincent提出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个是淹没过程。首先对每个像素的灰度级进行从低到高排序,然后在从低到高实现淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。
分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。显然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像作为输入图像,即
g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5
式中,f(x,y)表示原始图像,grad{.}表示梯度运算。
分水岭算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化,都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,是得到封闭连续边缘的保证的。另外,分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提供了可能。
为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识去除无关边缘信息。二是修改梯度函数使得集水盆只响应想要探测的目标。
为降低分水岭算法产生的过度分割,通常要对梯度函数进行修改,一个简单的方法是对梯度图像进行阈值处理,以消除灰度的微小变化产生的过度分割。即
g(x,y)=max(grad(f(x,y)),gθ)
式中,gθ表示阈值。
程序可采用方法:用阈值限制梯度图像以达到消除灰度值的微小变化产生的过度分割,获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高排序,然后在从低到高实现淹没的过程,梯度图像用Sobel算子计算获得。对梯度图像进行阈值处理时,选取合适的阈值对最终分割的图像有很大影响,因此阈值的选取是图像分割效果好坏的一个关键。缺点:实际图像中可能含有微弱的边缘,灰度变化的数值差别不是特别明显,选取阈值过大可能会消去这些微弱边缘。
❽ 分水岭算法的介绍
所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。要搞懂就不容易了。Watershed Algorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割。现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕 山,山围水的情形。当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或 都是连通的关系,就是我们可爱的分水岭(watershed)。为了得到一个相对集中的集水盆,那么让水涨到都接近周围的最高的山顶就可以了,再涨就要漏 水到邻居了,而邻居,嘿嘿,水质不同诶,会混淆自我的。那么这样的话,我们就可以用来获取边界灰阶大,中间灰阶小的物体区域了,它就是集水盆。
❾ 分水岭算法的原理及相关思想的阐述是什么
首先选择最低的点,就是分水岭中最底的山谷。
然后灌水:
1 . 极值点周围的点也划分到极值点,它们属于一个区域。
2 . 在灌水的过程中根据你设定的阈值,还需要把有的区域合并。
3. 这个过程中有新的局部极值点产生,也是山谷,但不一定是最底的山谷。
最后灌满了水之后,由起始的极值点形成了一个一个的区域。
❿ 分水岭算法适合分割什么图像
网络中搜“分水岭算法”,介绍的很详细,也很易懂,很难再说的比其还要好,你看看吧!