跪求matlab程序代码 关于医学图像分割处理 边缘检测 阈值法

跪求matlab程序代码 关于医学图像分割处理 边缘检测 阈值法,第1张

图像分割程序:

% This is a program for extracting objects from an image Written for vehicle number plate segmentation and extraction

% Authors : Jeny Rajan, Chandrashekar P S

% U can use attached test image for testing

% input - give the image file name as input eg :- car3jpg

clc;

clear all;

k=input('Enter the file name','s'); % input image; color image

im=imread(k);

im1=rgb2gray(im);

im1=medfilt2(im1,[3 3]); %Median filtering the image to remove noise%

BW = edge(im1,'sobel'); %finding edges

[imx,imy]=size(BW);

msk=[0 0 0 0 0;

0 1 1 1 0;

0 1 1 1 0;

0 1 1 1 0;

0 0 0 0 0;];

B=conv2(double(BW),double(msk)); %Smoothing image to reduce the number of connected components

L = bwlabel(B,8);% Calculating connected components

mx=max(max(L))

% There will be mx connected componentsHere U can give a value between 1 and mx for L or in a loop you can extract all connected components

% If you are using the attached car image, by giving 17,18,19,22,27,28 to L you can extract the number plate completely

[r,c] = find(L==17);

rc = [r c];

[sx sy]=size(rc);

n1=zeros(imx,imy);

for i=1:sx

x1=rc(i,1);

y1=rc(i,2);

n1(x1,y1)=255;

end % Storing the extracted image in an array

figure,imshow(im);

figure,imshow(im1);

figure,imshow(B);

figure,imshow(n1,[]);

边缘检测:

I=imread('lenajpg');

imshow(I);

title('原始图像');

BW1= edge(I,'Canny',000) ; %edge调用Canny为检测算子判别阈值为000

figure,imshow(BW1);

title( '阈值为000的Canny算子边缘检测图像 ');

BW2= edge(I,'Canny',005) ; %edge调用Canny为检测算子判别阈值为005

figure,imshow(BW2);

title( '阈值为005的Canny算子边缘检测图像');

BW20= edge(I,'Canny',01) ; %edge调用Canny为检测算子判别阈值为01

figure,imshow(BW20);

title( '阈值为01的Canny算子边缘检测图像');

BW21= edge(I,'Canny',02) ; %edge调用Canny为检测算子判别阈值为02

figure,imshow(BW21);

title( '阈值为02的Canny算子边缘检测图像 ');

BW22= edge(I,'Canny',03) ; %edge调用Canny为检测算子判别阈值为03

figure,imshow(BW22);

title( '阈值为03的Canny算子边缘检测图像 ');

OTSU算法又叫最大类间方差阈值分割算法,也叫大津算法(大津展之 Ōtsu Nobuyuki),主要用于一些简单的阈值确定。

对于下面这张灰度

我们想让这些物体(前景)和背景区分更明显一些,比如让物体为纯黑,背景全白。那么我们就需要找到一个合适的阈值,使上灰度值大于这个阈值的像素点为255(白色),灰度值小于阈值的像素点为0(黑色)。也就是变成下面这幅图:

怎样确定这个阈值呢?OTSU算法说,我们可以求出用这个阈值分割后的两个图像对应pixel的类间方差。对于每一个可能的阈值,我们计算并取出类间方差最大的那个像素pixel值,此时这个值就可以较好的对图像进行分割。

对应直方图如下:

1、将灰度值区间为[0,m],对于[0,m]间的每一个灰度t,将它作为阈值将图像分割为灰度为[0,t]以及[t+1,m]两部分。

2、计算每一部分的所占比例 , ,每一部分的平均灰度值 , ,以及总的平均灰度值 。

3、计算他们的类间方差:

4、取出类间方差最大时对应的阈值t,这就可以作为我们最终所取的阈值。

小伙伴们如果觉得文章还行的请点个赞呦!!同时觉得文章哪里有问题的可以评论一下 谢谢你!

1基于阈值的分割方法

阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值作比较,最后将像素根据比较结果分到合适的类别中。因此,该方法最为关键的一步就是按照某个准则函数来求解最佳灰度阈值。

阈值法特别适用于目标和背景占据不同灰度级范围的图。图像若只有目标和背景两大类,那么只需要选取一个阈值进行分割,此方法成为单阈值分割;但是如果图像中有多个目标需要提取,单一阈值的分割就会出现作物,在这种情况下就需要选取多个阈值将每个目标分隔开,这种分割方法相应的成为多阈值分割。

2基于区域的图像分割方法

基于区域的分割方法是以直接寻找区域为基础的分割技术,基于区域提取方法有两种基本形式:一种是区域生长,从单个像素出发,逐步合并以形成所需要的分割区域;另一种是从全局出发,逐步切割至所需的分割区域。

分水岭算法

分水岭算法是一个非常好理解的算法,它根据分水岭的构成来考虑图像的分割,现实中我们可以想象成有山和湖的景象,那么一定是水绕山山围水的景象。

分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。

以上就是关于跪求matlab程序代码 关于医学图像分割处理 边缘检测 阈值法全部的内容,包括:跪求matlab程序代码 关于医学图像分割处理 边缘检测 阈值法、阈值分割的OTSU算法、图像分割最好方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10634511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存