当前位置:文档之家› 医学数字图像处理实验报告

医学数字图像处理实验报告


title('laplacian 算子锐化图像'); % 标题为'laplacian 算子锐化图像'
H=fspecial('prewitt');
% 生成 Prewitt 滤波器
prewittH=filter2(H,I);
%以 prewitt 为模板对原图像进行锐化滤波
subplot(1,3,3);
%在子网中显示第 3 幅图像
%r1 由所有小于等于 T 的像素构成
r2=find(f>T);
%r2 由灰度值大于 T 的所有像素组成
Tnew=(mean(f(r1))+ mean(f(r2)))/2; %r1、r2 的像素分别计算平均灰度值,计算一个新的阈值 T
done=abs(Tnew-T)<1;
%计算阈值差值,满足不小于 1 时,停止循环
最终结果以自动迭代产生的阈值将目标与背景分离,产生相应的二值图像(如图 5)。
例 3 Laplacian 算子和模板匹配法
① 源代码
I=imread('tire.tif');
%读取图像 tire
subplot(1,3,1);imshow(I);
%在子网中显示第 1 幅图像
title('原图像');
%标题为'原图像'
%标题为'迭代阈值二值化图像'
④ 图像输出
原始图像
迭代阈值二值图像
图 4 原图像
图 5 阈值分割后的二值图像
③结果分析:迭代阈值分割步骤
第 4 页 共 16 页
《医学图像处理》
第一步:选取原图像灰度最大值与最小值的平均值作为初始阈值;第二步:用该阈值分割图像,产 生两组像素,即目标与背景;第三步:分别求得目标与背景的平均灰度值;第四步:求得一个新的 阈值(将目标与背景的平均灰度值相加再求平均值即得到 Tnew);第五步:计算阈值差值;第六步: 重复步骤二到步骤四,直到阈值差值不小于 1,输出阈值。
1、 函数 imadjust 是对灰度图像进行灰度变换的基本工具。其语法为 g=imadjust(f,[low_in high_in],[low_out high_out],gamma)
2、直方图均衡化 直方图生成函数为 imhist,其基本语法为 g=imhist(f,b) 直方图均衡化用工具箱中的函数 histeq histeq(f,nlev)
%sobel 水平算子分割结果
[g,t]=edge(f,'sobel',[],'horizontal'); subplot(2,3,3); imshow(g); title('sobel 水平算子分割结果');
%应用 sobel 算子检测图像 f 的边缘 %创建有 2*2 子图像的窗口,图像在位置 3 %显示经 sobel 水平算子处理后的图像 %给图像加标题为‘sobel 水平算子分割结果’
H=fspecial('laplacian');
%生成 laplacian 滤波器
laplacianH=filter2(H,I);
%以 laplacian 为模板对原图像进行锐化滤波
subplot(1,3,2);
%在子网中显示第 2 幅图像
imshow(laplacianH);
%显示以 laplacian 算子锐化的图像
f=double(f); [g,t]=edge(f,'sobel',[],'both'); subplot(2,3,2); imshow(g); title('sobel 双边算子分割结果');
%转化图像 f 的类型为双精度 %应用 sobel 算子检测图像 f 的边缘 %创建有 2*2 子图像的窗口,图像在位置 2 %显示经 sobel 双边算子处理后的图像 %给图像加标题为‘sobel 双边算子分割结果’
%图像未加噪声前
>> f=imread('cameraman.tif'); subplot(2,3,1); imshow(f,[]); title('原始图像');
%读入图像 %创建有 2*2 子图像的窗口,原图在位置 1 %显示原图像 f %给图像加标题为'原始图像'
%sobel 双边算子分割结果
二、实验环境
1、硬件配置:处理器:Intel(R) celeron(R) CPU 安装内存(RAM):4.00GB 系统类型:64 位操作系统
N2940 @1.83GHz 1.83GHz
2、软件环境:MATLAB R2012b
三、实验内容
(包括本实验要完成的实验问题及需要的相关知识简单概述)
一、实验原理
②图像输出
原始图像
Roberts算 子 分 割 结 果
Sobel算 子 分 割 结 果
Prewitt算 子 分 割 结 果
图 9 原图与 Roberts、Sobel、Prewitt 算子分割结果 ③结果分析
原图像经多种梯度算子进行边缘检测后,更加突显出原图像的边缘,抑制了图像中非边缘信息, 使图像轮廓更加清晰 。
3、直方图规定化 函数 histeq 实现直方图匹配的形式为 g=histeq(f,hspec)
4、图像正交变换 傅里叶频谱可以使用函数 abs 来获得 F=abs(Y) 傅里叶逆变换用函数 ifft2 实现,基本语法为 F=ifft2(F)
第 2 页 共 16 页
《医学图像处理》
四、实验结果与分析
③结果分析 由图 7 可看出,Laplacian 算子的处理,图像模糊近乎成虚像的形式,边缘信息大量丢失; 由图 8 可看出,prewitt 算子将图像边缘拉大,近乎失真。
例 4 不同边缘检测方法比较
第 5 页 共 16 页
《医学图像处理》
①源代码
f=imread('eight.tif'); subplot(2,2,1); imshow(f); title('原始图像'); [g,t]=edge(f,'roberts',[],'both'); subplot(2,2,2); imshow(g); title('Roberts 算子分割结果'); [g,t]=edge(f,'sobel',[],'both'); subplot(2,2,3); imshow(g); title('Sobel 算子分割结果'); [g,t]=edge(f,'prewitt',[],'both'); subplot(2,2,4); imshow(g); title('Prewitt 算子分割结果')
%标题为'原始图像'
Байду номын сангаас
f=double(f);
%将原图像转换为双精度类型
T=(min(f(:))+max(f(:)))/2;
%设定初始阈值 T(图像的平均灰度值)
done=false;
%定义开关变量,用于控制循环次数
i=0;
%初始变量 i 为 0
while ~done
%迭代法计算量
r1=find(f<=T);
(包括实验原理、数据的准备、运行过程分析、源程序(代码)、图形图象界面等)
【例题】
例 1 手动阈值分割
① 源代码
[I,map]=imread('eight.tif');
%读取原图像 eight
imshow(I); figure;J=imhist(I);imhist(I);[M,N]=size(I); %显示图像并生成直方图,图像大小为 M*N 像素
roberts 算子检测边缘:可看到图像的一些边缘信息丢失;检测精度较高,由于没有经过图像平 滑计算,因此不能抑制噪声,但该算子对具有陡峭的低噪声图像响应最好
Prewitt,Sobel 算子检测边缘图像产生了一定的模糊,而且还会检测出一些伪边缘,所以检测精度比 较低,该算子比较适用于图像边缘灰度值比较尖锐且图像噪声比较好的情况。
评分
大理大学实验报告
课程名称 医学图像处理
实验名称 图像分割
专业班级 13 级生物医学工程 1 班
姓 名 范小欢
杨飞
学 号 2013166143 2013166141
实验日期
2015/12/17
实验地点
三教 204
2015—2016 学年度第 2 学期
《医学图像处理》
一、 实验目的
掌握常用的边缘提取算法,哦那个图像中提取感兴趣的区域,实现图像分割。在图像中,寻找灰 度相同或相似的区域,区分图像中的背景区域和目标区域,利用 matlab 实现图像的边缘检测,进行 图像分割。
for i=1:1:M
%用 for 语句依次读取图像像素点,若超过了指定的阈值 200,取像素为 0,否则为 1
for j=1:1:N
if I(i,j)>200
%若像素点大于 200,则取 0,反之
g(i,j)=0;
else g(i,j)=1; %否则取 0
end
%if 循环的 end
end
end
figure;imshow(g);
第 6 页 共 16 页
《医学图像处理》
roberts 算子是利用图像的两个对角的相邻像素进行梯度幅值的检测,并且检测水平和垂直方向 边缘的性能好于斜线方向的边缘,检测精度较高,但容易丢失一部分边缘信息,同时由于没有经过图 像平滑计算,因此不能抑制噪声,但该算子对具有陡峭的低噪声图像响应最好 Prewitt,Sobel 算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有差异,因此两者 对噪声具有一定的抑制作用,但这种抑制作用是通过像素平均来实现的,所以图像产生了一定的模糊, 而且还会检测出一些伪边缘,所以检测精度比较低,该算子比较适用于图像边缘灰度值比较尖锐且图 像噪声比较好的情况。
相关主题