matlab静态图像分割与边缘检测及图像压缩与编码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号14102500892
光电图像处理实验报告
实验三:静态图像分割与边缘检测
作者肖剑洪专业电子科学与技术学院物理与电子学院指导老师王晓明
完成时间2013.12.2
实验三静态图像分割与边缘检测
一、实验目的
1.学习常用的图像分割与边缘检测方法,并通过实验使学生体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响;
2.观察图像分割的结果,产生对所讲述理论知识的直观认识,加深对图像分割与边缘检测相关理论知识的理解。

3.掌握常用图象分割及边缘检测方法的算法设计及编程实现;
4.学会使用MATLAB软件中关于图像分割与边缘检测的函数;
二、实验设备
联想图像处理工作站
三、实验内容及要求
1.自己编写M-function实现图像阈值分割算法,要求该程序能对256级灰度图像进行处理,显示处理前、后图像;
2.自己编写M-function实现利用Sobel算子进行图像边缘检测的算法,并对图像进行检测,显示原图像、处理后的图像。

3.调用Matlab自带的图像处理函数,用不同的算子对图像进行分割、边缘检测,比较结果。

4.结合以上实验内容,使用ICETECK-DM642-IDK-M实验系统进行相应的动态视频图像分割及边缘检测,观察结果。

四、实验原理
1.图像分割
图像分割是将图像划分成若干个互不相交的小区域的过程,小区域是某种意义下具有共同属性的像素的连通集合。

图像分割有三种不同的途径:区域法、边界法、边缘法。

最常用的是灰度阈值化处理进行的图像分割:
(,)(,)255
(,)f x y T g x y f x y T
⎧<⎪=⎨
≥⎪⎩
域值T 的选取直接影响分割的效果! (1)直方图双峰域值选择 (2)迭代域值选择
迭代思想:选择一个初始估计值,通过某种策略不断改进(调制)新的估计值,直到满足给定的准则。

迭代步骤:
⑴选择一个初值估计值T ,一般为最大灰度值和最小灰度值的中间值; ⑵使用域值T 分割图像,得到两组像素G1(>=T)和G2(<T ); ⑶计算两组像素的灰度均值:μ1和μ2; ⑷计算新域值T =(μ1和μ2)/2;
⑸重复步骤2~4,直到新域值的改变量小于预先定义的参数e 。

(3)最大类间方差法(Otsu ) 思想:
⑴将图像中目标和背景看作分属不同类别的像素组成;
⑵判别分析法的目标是确定域值使分属不同类别的像素的类间方差最大。

1.边缘检测
灰度或结构等信息的突变出称为边缘,在空间域借助微分算子通过卷积来完成,而空域的微分在离散数字图像可以采用差分来近似。

基于一阶导数的边缘检测算子有Robert 算子、Sobel 算子、Prewitt 算子等,基于二阶导数的边缘检测算子有Laplace 算子,LOG 算子是一种改进的方式。

Sobel 算子为一对模板:
五、实验步骤
1.根据实验内容的要求在MATLAB 软件中编写相应程序;
1)灰度阈值分割实验(使用迭代阈值选择方法)
-1 -2 -1 0
0 0 1
2
1
-1 0 1 -2 0 2 -1
1
2)使用Sobel 算子的边缘检测实验
3)调用Matlab已有的图像处理函数,对图像进行分割和边缘检测
a.调用边缘检测函数edge,并与自己编写的函数运行结果进行比较;
b.用其他边缘检测算子和分割方法对图像进行处理,并对结果进行比较。

2.调试运行程序,并记录结果。

3.结合以上实验内容,使用ICETECK-DM642-IDK-M实验系统进行相应的动态视频图像增强处理,观察结果。

4.完成实验报告。

六、实验程序清单和实验结果及分析
1.图像分割
clear all, close all;
H= imread('f:/1.jpg');
I=rgb2gray(H);
figure (1),imshow(I)
figure(2); imhist(I)
T=120/255;
Ibw1 = im2bw(I,T); %选择阈值T=120/255对图像二值化;
figure(3);
subplot(1,2,1), imshow(Ibw1);
T=graythresh(I); %采用Otsu方法计算最优阈值T对图像二值化;
L = uint8(T*255)
Ibw2 = im2bw(I,T);
subplot(1,2,2), imshow(Ibw2);
(2)迭代域值选择
clc;clear all;
H=imread('f:/1.jpg');
I=rgb2gray(H);
I=double(I)/255;
k1=(max(max(I))+min(min(I)))/2;
[rows cols]=size(I);
count1=0;
count2=0;
for i=1:rows
for j=1:cols
if I(i,j)<k1
count1=count1+1;
G1(count1).I=I(i,j);
else
count2=count2+1;
G2(count2).I=I(i,j);
end
end
end
k2=(mean(mean([G1.I]))+mean(mean([G2.I])))/2; while(abs(k2-k1)>(5/255))
k1=k2;
count1=0;
count2=0;
for i=1:rows
for j=1:cols
if I(i,j)<k1
count1=count1+1;
G1(count1).I=I(i,j);
else
count2=count2+1;
G2(count2).I=I(i,j);
end
end
end
k2=(mean(mean([G1.I]))+mean(mean([G2.I])))/2;
end
figure(1);imshow(I);
figure(2);II=im2bw(I,k2);imshow(II);
2.边缘检测
clear all, close all;
H=imread('f:/1.jpg');
I=rgb2gray(H);
BW1 = edge(I,'sobel');
BW2 = edge(I,'canny');
BW3 = edge(I,'prewitt');
BW4 = edge(I,'roberts');
BW5 = edge(I,'log');
figure(1), imshow(I), title('Original Image');
figure(2), imshow(BW1), title('sobel');
figure(3), imshow(BW2), title('canny');
figure(4), imshow(BW3), title('prewitt');
figure(5), imshow(BW4), title('roberts');
figure(6), imshow(BW5), title('log');
八、实验思考题
1.小结一下本实验所用的边缘检测方法。

答:边缘检测的基本算子有:一阶::Roberts Cross算子,Prewitt算子,Sobel 算子,Kirsch算子,罗盘算子;二阶:Marr-Hildreth,在梯度方向的二阶导数过零点,Canny算子,Laplacian算子Canny算子(或者这个算子的变体)是最常用的边缘检测方法。

在Canny 创造性的工作中,他研究了设计一个用于边缘检测最优预平滑滤波器中的问题,后来他说明这个滤波器能够很好地被一阶高斯导数核优化。

另外Canny 引入了非最大抑制概念,它是说边缘定义为在梯度方向具有最大梯度值的点。

在一个离散矩阵中,非最大抑制阶梯能够通过一种方法来实现,首先预测一阶导数方向、然后把它近似到45度的倍数、最后在预测的梯度方向比较梯度幅度。

2.基于微分方法的边缘检测算法的依据是什么?
答:一般来说不同区域的交界处构成边缘,同一区域内像素的灰度差较小,而不同区域像素灰度差较大,因此用微分可以很好地检测满足这种假设的区域边界。

学号14102500892
光电图像处理实验报告
实验四:图像压缩与编码
作者肖剑洪专业电子科学与技术学院物理与电子学院指导老师王晓明
完成时间2013.12.2
实验四图像压缩与编码
一、实验目的
1.了解图像压缩编码原理;
2.掌握常用的图像压缩算法及编程实现;
3.学会使用MATLAB软件中关于图像压缩编码的函数;
二、实验设备
联想图像处理工作站
三、实验内容及要求
1.自己编写M-function实现图像无损压缩算法,要求该程序能对256级灰度图像进行压缩数据,计算压缩算法的性能;
2.自己编写M-function实现图像有损压缩算法,要求该程序能对256级灰度图像进行压缩数据,计算压缩算法的性能;
3.调用Matlab自带的图像处理函数,用不同的算法对图像进行压缩编码,比较结果。

四、实验原理
图像压缩与编码是在满足一定保真度的要求下,对图像数据的进行变换、编码和压缩,去除冗余数据减少表示数字图像时需要的数据量,以便于图像的存储和传输,即以较少的数据量有损或无损地表示原来的像素矩阵的技术。

图像压缩编码可分为两类:一类压缩是可逆的,即从压缩后的数据可以完全恢复原来的图像,信息没有损失,称为无损压缩编码;另一类压缩是不可逆的,即从压缩后的数据无法完全恢复原来的图像,信息有一定损失,称为有损压缩编码。

传统数据压缩方法的分类:无损压缩包括统计编码(Huffman编码,Shannon 编码,游程编码,算术编码等)和轮廓编码;有损压缩包括预测编码(脉冲编码调制PCM,Differential PCM,AdaptiveDPCM等)、变换编码(DFT,DCT,KLT,
WHT,小波变换等)和混合编码。

统计编码是根据信源的概率分布特性,分配具有惟一可译性的可变长码字,降低平均码字长度,以提高信息的传输速度,节省存储空间。

其基本原理是在信号概率分布情况已知的基础上,概率大的信号对应的码字短,概率小的信号对应的码字长,这样就降低了平均码字长度。

其中Huffman编码具体的编码方法为:①把输入元素按其出现概率的大小顺序排列起来,然后把最末两个具有最小概率的元素之概率加起来;②把该概率之和同其余概率由大到小排队,然后再把两个最小概率加起来,再重新排队;③重复②,直到最后只剩下两个概率为止。

变换编码的基本原理是通过数学变换可以改变信号能量的分布,从而压缩信息量。

以傅里叶变换的概念说明合理的变换可以改变信号能量分布的基本原理。

在变换编码中有以下二个问题值得注意:图像变换方法的选取;子图像大小的选取。

传统的DFT,DCT,KLT和经典小波变换等变换编码在图像变换后会产生浮点数,因而必须对变换后的数据进行量化处理,这样就产生不同程度的失真。

而新一代的整数小波变换(第二代小波变换)采用提升方法能够实现整数变换,因而能够实现图像的无损压缩。

新的静态图像压缩标准JPEG2000中采用了基于提升方法的整数小波变换。

五、实验步骤
1.选择一组合适的原始图像作为测试图像;
2.根据设计要求选择合适的图像压缩与编码方法;
3.设计压缩与编码算法;
4. 显示原始图像和压缩重构图像;
5. 计算压缩的性能指标:压缩率和保真度;
6.完成实验报告。

六、实验结果及分析
1、利用余弦变换实现图像压缩: DCT先将整体图像分成N×N像素块(一般N=8 ,即64个像素块),再对N×N块像素逐一进行DCT变换。

由于大多数图像高频分量较小,相应于图像高频成分的失真不太敏感,可以用更粗的量化,在保证所要求的图质下,舍弃某些次要信息。

实验代码:
a=imread('f:/1.jpg');
I=rgb2gray(a);
imshow(I);
title('原始图像');
disp('原始图像大小:');
whos('I');
I=im2double(I);%图像类型存储转换,将图像矩阵转换成双精度类型? T=dctmtx(8);%离散余弦变换矩阵
B = blkproc(I,[8 8],'P1*x*P2',T,T');
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
figure,imshow(I2);
title('压缩后的图像');
disp('压缩图像的大小:');
whos('I2');
原始图像大小:
Name Size Bytes Class Attributes
I 287x287 82369 uint8
压缩图像的大小:
Name Size Bytes Class Attributes I2 287x287 658952 double
2、利用小波变换实现图像压缩
clear all
a=imread('f:/1.jpg');
I=rgb2gray(a);
imshow(I);
title('原始图像');
disp('原始图像I的大小:');
whos('I');
I=im2double(I);
[c,s]=wavedec2(I,2,'bior3.7');
ca1=appcoef2(c,s,'bior3.7',1);
ch1=detcoef2('h',c,s,1);
cv1=detcoef2('v',c,s,1);
cd1=detcoef2('d',c,s,1);
ca1=appcoef2(c,s,'bior3.7',1);
ca1=wcodemat(ca1,440,'mat',0);
ca1=0.5*ca1;
figure,image(ca1);
title('第一次压缩后的图像');
disp('第一次压缩图像的大小为:');
whos('ca1');
ca2=appcoef2(c,s,'bior3.7',2);
ca2=wcodemat(ca2,440,'mat',0);
ca2=0.25*ca2;
figure,image(ca2);
title('第二次压缩后的图像');
disp('第二次压缩图像的大小为:');
whos('ca2');
原始图像I的大小:
Name Size Bytes Class Attributes
I 287x287 82369 uint8
第一次压缩图像的大小为:
Name Size Bytes Class Attributes ca1 151x151 182408 double
第二次压缩图像的大小为:
Name Size Bytes Class Attributes
ca2 83x83 55112 double
八、实验思考题
1.DFT与DCT的性能比较;
答:DCT是离散傅里叶变换;DFT是离散余弦变换。

共同点:都将空域的图像数据信息转换到频域中,即分离出图像的低频到高频成分。

区别:1、DCT与DFT转换后的域仅包含频域成分,就叫频域;DWT转换后的域不仅有频域成分,还具有空域成分,因此叫小波域。

2、DCT的频域的低频成分在DCT系数图的中间,高频成分在四周,离系数图中心越远,频率越高;DFT与DWT的频域的低频成分在系数图左上方,越往右下方频率越。

相关文档
最新文档