【毕业设计系列】019:常用的图像分割算法及其实现(效果很好)
Date: 2017/12/30
1、常用的图像分割算法
(1)基于阈值的分割方法:可在各种颜色空间或不同通道中完成阈值、自适应阈值图像分割。
(2)基于边缘的分割方法:各种边缘检测算子,Sobel,Canny等。
(3)基于区域的分割方法:分水岭、区域归并与分裂。
(4)图割分割:最大流(最小割)算法
(5)基于深度信息的分割:
(6)基于先验信息的分割:
2、实现
(这里仅提供部分代码程序,需要完整代码的同学可以通过QQ(2963033731)联系我进行获取!)
编程语言: Matlab
Matlab代码:
点击查看代码
%% 基于Matlab的图像分割算法研究
%方法包括:基于阈值的分割、基于分水岭变换的分割和基于区域生长法的分割
Img=imread('horse.jpg');%读取图像
g = rgb2gray(Img);%灰度化
figure,imshow(Img),title('原始图像');
%% 1.基于阈值的图像分割(OTSU)
% se=strel('disk',5);
% ft=imtophat(f,se);%顶帽变换
Thr=graythresh(g);%采用自适应阈值(大津阈值OTSU)
lt=im2bw(g,Thr);
figure,imshow(lt),title('局部阈值分割')
%% 2.基于分水岭变换的图像分割
%Step1. 获取灰度图像
Img_gray = g;
% Step2. 利用Sobel求取梯度图像
hy=fspecial('sobel');%生成sobel垂直梯度模板
hx=hy'; %生成sobel水平梯度模板
gradx=imfilter(double(Img_gray),hx,'replicate');
figure,imshow(abs(gradx),[]),title('图像的sobel水平梯度');
grady=imfilter(double(Img_gray),hy,'replicate');
figure, imshow(abs(grady),[]),title('图像的sobel垂直梯度');
grad=sqrt(gradx.^2+grady.^2); %得到图像的sobel梯度
figure,imshow(grad,[]),title('图像的sobel梯度图像');
L1 = watershed(grad);
Lrgb1 = label2rgb(L1);
figure,imshow(Lrgb1),title('梯度幅值直接做分水岭变换(传统的分水岭变换)')%直接进行变换的效果不好
注意:后面核心代码并未提供。
3、实验结果
本文为博主原创文章,未经博主允许不得转载。若允许转载,请注明来源https://www.cnblogs.com/SoaringLee/,否则保留追究法律责任的权利!
另外,本人提供付费咨询服务并长期承接各类毕设以及外包项目。联系QQ:2963033731。加Q备注:CNBLOG外包