局部与全局分割图像的原理与MATLAB程序

基于迭代(自动阈值)算法的医学图像增强方法
1 算法原理介绍
1.1 基于灰度阈值的图像分割原理
采用灰度阈值对图像进行分割是图像分割的基本方法之一。通过设定灰度阈值,把图像的象素点按灰度等级进行分类,把图像分割成若干子图像。在实际应用中,最常用的一种分割方法是将图像分割成高灰度区和低灰度区两部分,组成一幅二值图像。该分割方法按式1对图像进行操作。
(1)
其中,T为预先设定的灰度阈值,f为输入图像,g为输出图像。基于灰度阈值对图像进行分割的基本条件是式(1)中阈值T的选择。虽然采用人工方法往往可以获得较理想的阈值,但是在很多情况下,需要计算机自动完成阈值的选择,这样就要求有合适的算法对图像的灰度直方图进行分析,选择合适的阈值。在实际中常采用迭代算法或Ostu法对阈值进行自动计算[1],本文仅介绍迭代算法。迭代算法的基本思想是:首先设定一个阈值的估计值;采用一定的算法反复对该估计值进行修正,保证每次修正后的结果都优于前一次;当进行一定次数的修正之后,结果趋于收敛,即相邻两次的结果的差异较小,当该差异小到可接受范围时,表明一个理想的阈值已经求出。最后利用该阈值按式(1)对图像进行操作,即完成了图像的自动阈值分割。
但是,一些图片由于照度不均、阴影、对比度差异等,使得如果采用同一阈值对整幅图片进行处理(即全局阈值)时会出现不兼容图像各处的情况,使得分割效果变差。这时,可以考虑将图片分割成若干子图片,将每个子图片按自动阈值算法进行处理,然后再将各个子图片的处理结果合并成整体结果输出,该方法称局部阈值或动态阈值法。
1.2基于图像自动阈值分割的边缘检测
采用全局阈值或局部阈值获得的二值图像可以方便地应用在图像的边缘检测当中。由于图像已经转换为二值图像,所以对图像中边缘信息的提取较为方便,仅需判断某像素是区域内部点还是边缘点即可。实际操作中,对二值图像中黑(或白)点的四邻域进行判断,若该点的四邻域均为黑(或白),即可判断该点为区域内部点而不是边缘点。依次对图像中每个象素的四邻域进行判断,即可得到图像的边缘信息。
2 程序设计
本次实验中,程序采用Matlab语言编写。采用基于迭代的自动阈值算法分别实现了对图像的全局阈值分割、局部阈值分割,并利用全局阈值分割的结果,实现图片的边缘检测,增强了图片中的边缘信息。
2.1 迭代算法的实现[2]
根据1.1节中介绍的迭代算法思想,采用如下语句实现利用迭代算法出用于图像分割的阈值。
t=mean(gray_image(:)); %设置估计值
is_done=false; %迭代完成标志位
count=0; %迭代计数归零
禁欲主义while ~is_done %迭代循环
r1=find(gray_image<=t); %按前次结果t对图像二分
r2=find(gray_image>t);
temp1=mean(block(r1)); %求r1区域均值
if isnan(temp1); %保证结果非NaN
temp1=0;
end
temp2=mean(block(r2)); %求r2区域均值
if isnan(temp2) %保证结果非NaN
temp2=0;
本报内部消息end
t_new=(temp1+temp2)/2;
is_done=abs(t_new-t)<1; %检测两次迭代计算结果的差值
t=t_new; %更新结果
count=count+1; %迭代计数增1
if count>=1000 %判断是否迭代次数过多
Error='Error:Cannot find the ideal threshold.' %出错提示
Return %退出程序
end
end
该程序中,首先将估计值设为灰度图像的灰度均值。该估计值对最终处理结果不产生影响,但该值越接近最终结果,则迭代计算的次数越少,增加程序效率。程序中采用is_done标志来决定是否继续进行迭代计算,is_done标志由判断两次迭代结果的差值决定,本程序中设定若两次迭代结果相差小于1则视为迭代结束。在某些极端情况下,该算法无法出理想阈值,迭代计算将陷入死循环,所以在程序的迭代循环中,除了进行迭代结果的计算外,还增加了迭代次数的检测,当迭代运算进行了1000次仍没有出理想阈值时,视为迭代失败,退出程序。同时,还对区域求均值得操作结果作了检验,如果结果为NaN,就将结果更正为0,这样增强了整个程序的健壮性,防止程序陷入死循环。
2.2 全局阈值图像分割的实现
对图像进行全局阈值分割按照图1的流程进行。
图1 全局阈值图像分割程序流程
其中,自动求阈值采用2.1节中的程序实现。对图像进行二值化处理采用如下程序进行。
[m,n]=size(gray_image); %获得原图尺寸
result=zeros(m,n); %申请内存空间用来存放结果result(r1)=255; %将图像二值化处理
resule(r2)=0;
经过上述程序,得到的二值化图像就存放在了数组result中。全局阈值图像分割程序的整体代码见附录I。
2.3局部阈值图像分割的实现
局部阈值图像分割的原理与全局阈值分割相似,只是在使用2.1节的程序前,将图像分割成若干子图像进行处理,在处理后,在将各自的结果拼接起来。该部分程序流程图见图2。
图2局部阈值图像分割程序流程
该程序中,对每个图像块进行自动阈值分割的程序与2.1节中的程序相同,不再赘述。采如下程序对图像进行分块与合并结果。
block_size=input('Block size='); %输入分块大小
for i=1:block_size:m %依次对图像分块并处理for j=1:block_size:n
if ((i+block_size)>m)&&((j+block_size)>n)
block=gray_image(i:end,j:end); %右下角区块
elseif ((i+block_size)>m)&&((j+block_size)<=n)
block=gray_image(i:end,j:j+block_size-1); %最右列区块
elseif ((i+block_size)<=m)&&((j+block_size)>n)
block=gray_image(i:i+block_size-1,j:end); %最下行区块
else
block=gray_image(i:i+block_size-1,j:j+block_size-1); %普通区块end
…………%该部分为基于迭代的灰度阈值分割程序,同2.1节,略
if ((i+block_size)>m)&&((j+block_size)>n)400公里动车组下线
result(i:end,j:end)=block; %右下角区块
elseif ((i+block_size)>m)&&((j+block_size)<=n)
result(i:end,j:j+block_size-1)=block; %最右列区块
elseif ((i+block_size)<=m)&&((j+block_size)>n)
result(i:i+block_size-1,j:end)=block; %最下行区块
else
result(i:i+block_size-1,j:j+block_size-1)=block; %普通区块
end
isp服务商end
end
在程序中,由于无法保证图片的尺寸能被输入的区块大小整除,即最右列和最下行区块可能为非完整区块,所以在分块时要对这些区块特殊处理。程序中采用if语句来判定区块类型,并选择合适的操作。该部分完整代码见附录II。
中国职业经理人认证
2.4 利用二值图像进行图像边缘的检测
利用迭代算法得到了图像的二值图像后,可利用该二值图像进行图像边缘的检测。从二值图像中提取图像的边缘较为方便,既对图像中黑或白区域中每一个像素的四邻域进行判断即可判断该像素是区域内点还是边缘点。用于边缘检测的代码如下:
edge=zeros(m,n);
for k=2:1:m-1
for j=2:1:n-1
if result(k,j)==255 %白区域
if ((result(k,j)==255)&&(result(k+1,j)==255)&&
(result(k-1,j)==255)&&(result(k,j+1)==255)&&
(result(k,j-1)==255)) %判断四邻域
edge(k,j)=255; %区域内点
else
edge(k,j)=0; %边缘点
end
else
edge(k,j)=255; %其他区域
end
end
end
经过上述代码,将在edge数组中得到图像的边缘。将得到边缘合并到原图,即可完成图像的边缘增强。
采用如下代码完成图像边缘与原图像的合并。
mix=gray_image;
mix=uint8(mix);
for k=1:1:m
for j=1:1:n
if edge(k,j)==0
mix(k,j)=0;
end
end
end
经上述程序,最终的结果存放在mix数组中。该部分完整程序见附录III。
3 结果分析
本实验中,选用头部MRI照片(图3)用于评估上述程序的性能。
图3 脑瘤患者头部MRI照片

本文发布于:2024-09-22 17:31:27,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/367525.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   阈值   迭代   分割   进行   程序   结果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议