通信工程图像处理实验报告Word格式文档下载.docx
- 文档编号:20415749
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:43
- 大小:1.60MB
通信工程图像处理实验报告Word格式文档下载.docx
《通信工程图像处理实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《通信工程图像处理实验报告Word格式文档下载.docx(43页珍藏版)》请在冰豆网上搜索。
其结果扩展了像素取值的动态范围。
通常把为得到均匀直方图的图像增强技术叫做直方图均衡化处理或直方图线性化处理。
用离散形式表示累积分布函数为:
2.4.直方图均衡化步骤
2.4.1列出原始图像灰度级fj,j=0,1,…,k,…,L-1;
2.4.2统计各灰度级的象素数目,nj,j=0,1,,…,k,…,L-1;
2.4.3计算原始图像直方图Pf(fj)=nj/n,n为原始图像总的象素数目;
2.4.4计算累积分布函数c(f);
2.4.5应用转移函数,计算映射后的灰度级,gi=INT[(gmax-gmin)c(f)+gmin+0.5]
2.4.6统计映射后各灰度级的象素数目ni,i=0,1,…,p-1;
2.4.7计算输出图像直方图Pg(gi)=nj/n,i=0,1,…,p-1;
2.4.8用fj和gi的映射关系,修改原始图像灰度级,获得直方图近似均匀分布的输出图像。
3.实验内容
3.1.图像直方图:
灰度级直方图是一种统计表达,他反映了该图中的不同灰度级出现的统计概率
3.2.计算出一幅灰度图象的直方图;
clear
closeall
I=imread(‘D:
\ProgramFiles\MATLAB\R2008a\toolbox\images\imdemos\Cameraman.bmp’);
imhist(I)
title('
实验一
(1)直方图'
)
3.3.对灰度图像进行简单的灰度线形变换
原图像f(m,n)的灰度范围[a,b];
线形变换为图像g(m,n),灰度范围[a’,b’];
公式:
g(m,n)=a’+(b’-a’)*f(m,n)/(b-a)
灰度变换是图像增强的重要方法之一,它不改变图像内的空间关系,可使图像动态范围增大,对比度得到扩展,使图像特征明显,更加清晰。
可表示为:
根据变换函数的形式,灰度变换分为线性变换,分段性变换和非线性变换。
假定图像f(m,n)的灰度范围为[a,b],变换后的图像g(m,n)的灰度范围线性的扩展至[a’,b’],其数学表达式如下:
I=imread('
D:
\ProgramFiles\MATLAB\R2008a\toolbox\images\imdemos\Cameraman.bmp'
);
figure
subplot(2,2,1)
imshow(I);
试验2-灰度线性变换'
subplot(2,2,2)
histeq(I);
imshow(I)
J=imadjust(I,[0.3,0.7],[0,1],1);
实验一(3)用g(m,n)=a’+(b’-a’)*f(m,n)/(b-a)进行变换'
imshow(J)
subplot(2,2,3)
J=imadjust(I,[0.50.8],[0,1],1);
subplot(2,2,4)
3.4.图像二值化(选取一个域值,将图像变为黑白图像)
J=find(I<
150);
I(J)=0;
J=find(I>
=150);
I(J)=255;
实验一(4)图像二值化(域值为150)'
clc;
14499.jpg'
bw=im2bw(I,0.5);
%选取阈值为0.5
figure;
imshow(bw)%显示二值图象
3.5利用直方图均衡化进行图像增强
PS=imread('
1.jpg'
%读入JPG彩色图像文件
imshow(PS)
%显示出来
输入的彩色JPG图像'
imwrite(rgb2gray(PS),'
PicSampleGray.bmp'
%将彩色图片灰度化并保存
PS=rgb2gray(PS);
%灰度化后的数据存入数组
%二,绘制直方图
[m,n]=size(PS);
%测量图像尺寸参数
GP=zeros(1,256);
%预创建存放灰度出现概率的向量
fork=0:
255
GP(k+1)=length(find(PS==k))/(m*n);
%计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:
255,GP,'
g'
)
%绘制直方图
原图像直方图'
xlabel('
灰度值'
ylabel('
出现概率'
%三,直方图均衡化
S1=zeros(1,256);
fori=1:
256
forj=1:
i
S1(i)=GP(j)+S1(i);
%计算Sk
end
S2=round((S1*256)+0.5);
%将Sk归到相近级的灰度
GPeq(i)=sum(GP(find(S2==i)));
%计算现有每个灰度级出现的概率
255,GPeq,'
b'
%显示均衡化后的直方图
均衡化后的直方图'
%四,图像均衡化
PA=PS;
fori=0:
PA(find(PS==i))=S2(i+1);
%将各个像素归一化后的灰度值赋给这个像素
figure,imshow(PA)
%显示均衡化后的图像
均衡化后图像'
imwrite(PA,'
PicEqual.bmp'
实验图像:
Cameraman.bmp、
四.实验结果及分析
在曝光不足或过度的情况下,图像灰度可能会局限在一个很小的范围内。
这时在显示器上看到的将是一个模糊不清、似乎没有灰度层次的图像。
采用线性变换对图像每一个像素灰度作线性拉伸,可有效地改善图像视觉效果。
这种线性变换使灰度小于a和灰度大于b的像素灰度强度强行变换成a’和b’,增强了图像中绝大多数像素的灰度层次感。
.
实验二:
图像变换
1.实验目的
1.1傅立叶变换:
熟悉其概念和原理,实现对一幅灰度图像的快速傅立叶变换,并求其变换后的系数(幅度)分布;
1.2DCT变换:
熟悉其概念和原理,实现对一幅图像做离散余弦变换,选择适当的DCT系数阈值对其进行DCT反变换;
2.实验原理
2.1.离散傅立叶变换
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
图象是由灰度(RGB)组成的二维离散数据矩阵,则对它进行傅立叶变换是离散的傅立叶变换。
对图像数据f(x,y)(x=0,1,…,M-1;
y=0,1,…,N-1)。
则其离散傅立叶变换定义可表示为:
式中,u=0,1,…,M-1;
v=0,1,…,N-1
其逆变换为
式中,x=0,1,…,M-1;
y=0,1,…,N-1
在图象处理中,一般总是选择方形数据,即M=N
影像f(x,y)的振幅谱或傅立叶频谱:
相位谱:
能量谱(功率谱)
2.2.快速傅里叶变化
可分离性的优点是二维的傅立叶变换或逆变换由两个连续的一维傅立叶变换变换来实现,对于一个影像f(x,y),可以先沿着其每一列求一维傅立叶变换,再对其每一行再求一维变换
正变化
逆变换
由于二维的傅立叶变换具有可分离性,故只讨论一维快速傅立叶变换.
正变换
由于计算机进行运算的时间主要取决于所用的乘法的次数。
按照上式进行一维离散由空间域向频率域傅立叶变换时,对于N个F(u)值,中的每一个都要进行N次运算,运算时间与N2成正比。
3.实验内容及结果分析
3.1傅立叶变换
步骤如下:
clc
D:
\ProgramFiles\MATLAB\R2008a\toolbox\images\imdemos\lena.bmp'
原图'
J=fft2(I);
imshow(J);
fft变换图'
%figure;
K=fftshift(J);
imshow(K);
原点移至频谱中心'
结果如下:
3.2离散余弦变换
熟悉其概念和原理,实现对一幅灰度和彩色图像作的离散余弦变换,选择适当的DCT系数阈值对其进行DCT反变换.
步骤如下:
loadimdemos;
i=imread('
\ProgramFiles\MATLAB\R2008a\toolbox\images\imdemos\lena.bmp
'
subplot(2,2,1);
imshow(i);
原始图象'
j=rgb2gray(i);
subplot(2,2,2);
imshow(j);
黑白化后的图像'
%图象的DCT变换
b=dct2(j);
subplot(2,2,3)
imshow(log(abs(b)),[]),colormap(jet(64)),colorbar;
DCT变换结果'
b(abs(b)<
10)=0;
%idct
c=idct2(b)/255;
imshow(c);
IDCT变换结果'
4.实验小结
DFT是离散傅里叶变换,针对的是离散的信号和频谱。
DFT是DTFT变化而来,其实就是将连续时间t变成了nT.为什么要这样做呢,因为计算机是在数字环境下工作的,它不可能看见或者处理现实中连续的信号,只能够进行离散计算,在真实性上尽可能地逼近连续信号。
所以DFT是为了我们能够去用工具分析信号而创造出来的,通常我们直接用DTFT的机会很少。
DCT是DFT的一种形式。
所谓“余弦变换”,是在DTFT傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化(DFT)可导出余弦变换,因此称之为离散余弦变换(DCT)。
其实DCT属于DFT的一个子集。
通过dct反变换重构的图像,看上去有点模糊,失真明显。
实验三:
图像分割
1.实验目的
1.1学习边缘检测,及如何对图像进行分割。
1.2学习运用双峰法对图像进行分割,分析理解分割的含义。
2.实验内容
学习边缘检测,学习灰度阀值分割。
分别用sobel、Laplacian-Gaussian方法对一幅灰度图像进行边缘提取,具体程序如下:
clear
closeall
i=imread('
\Program
Files\MATLAB\R2008a\toolbox\images\imdemos\lena.bmp'
ii=rgb2gray(i);
imshow(ii);
原始图像'
subplot(2,2,3);
title('
i1=edge(ii,'
sobel'
subplot(2,2,2);
imshow(i1);
sober方法提取的边缘'
i2=edge(ii,'
log'
subplot(2,2,4);
imshow(i2);
Laplacian-Gaussian方法提取的边缘'
i=imread('
ii=rgb2gray(i);
subplot(1,2,1);
imhist(ii);
原始图像直方图'
thread=130/255;
subplot(1,2,2);
i3=im2bw(ii,thread);
imshow(i3);
分割结果'
4.实验小结
通过这次试验,我理解了图像分割的技术,理解了一些图像分割的思想和理念。
主要就是对像素的一些分析和分类。
根据原图像的直方图,发现背景和目标的分割值大约在130左右,并将灰度图像转为二值图像,分割效果比较理想。
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效。
在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。
在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量Laplace算子首先通过高斯函数对图像进行平滑处理,因此对噪声的抑制作用比较明显,但同时也可能将原有的边缘也平滑了,造成某些边缘无法检测到,。
此外高斯分布因子σ的选择对图像边缘检测效果有较大的影响。
σ越大,检测到的图像细节越丰富,但抗噪能力下降,从而出现伪边缘,反之则抗噪能力提高,但边缘检测精度下降,易丢失许多真边缘,因此,对于不同图像应选择不同参数。
实验四:
实现JPEG的压缩和编码
实现基本JPEG的压缩和matlab编码
2实验原理:
分块采样:
JPEG压缩首先是对图像(实验中用的是灰度图像)的每一帧中各分量信号进行单独采样。
采样时,当一帧图像信号输入到编码器时,编码器立即将其进行分解处理,这称为帧改组。
在帧改组中,首先得到16*16个采样点的宏区块,然后再得到8*8个采样点的像块。
FDCT变换:
经过帧重组和采样,视频图像的各分量信号变为一个8*8的样值矩阵,再经过离散余弦变换。
它是一种傅里叶变换,任何连续的实对称函数,采用傅里叶变换后,就只含余弦项。
量化:
经过DCT变换后的F矩阵中的各DCT系数间的相关性已经显现出来,即左上角的系数值大,而右下角的系数值小。
这样,进行量化后,增加右下角的“0”值系数,从而进一步提高F矩阵的相关性,为数据压缩进一步提供了条件。
这种量化也就是按照某种要求将F矩阵中的各系数值按不同的比例减小,显然量化是图像质量下降的最主要原因。
Zig-Zag扫描:
Zig-Zag扫描采用的是Z字形扫描方式,这主要是因为,在量化后的DCT系数矩阵中,非0的数据主要都集中于矩阵的左上角。
哈夫曼编码(HuffmanCoding)是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。
uffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。
哈夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。
哈夫曼压缩属于可变代码长度算法一族。
意思是个体符号(例如,文本文件中的字符)用一个特定长度的位序列替代。
因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。
3.实验内容:
2.1.实现基本JPEG的压缩和编码分三个步骤:
2.1.1.首先通过DCT变换去除数据冗余;
2.1.2使用量化表对DCT系数进行量化;
2.1.3对量化后的系数进行Huffman编码。
2.2.具体源程序由主程序及五个子程序(zigza扫描、DC和ACT量化、Huffman编码)组成:
1.主程序
\ProgramFiles\MATLAB\R2008a\toolbox\images\imdemos\lena.bmp'
yiq=rgb2ntsc(I);
%transformRGBtoNTSC
my=[1611101624405161;
1212141926586055;
1413162440576956;
1417222951878062;
182237566810910377;
243555648110411392;
49647887103121120101;
7292959811210010399];
miq=[1718244799999999;
1821266699999999;
2426569999999999;
4766999999999999;
9999999999999999;
9999999999999999];
C=dctmtx(8);
%生成标准DCT变化中的矩阵(8×
8)。
...DCT变换公式:
正变换:
Y=CPC'
;
逆变换:
P=C'
YC;
I1=yiq(:
:
1);
%亮度信号
I2=yiq(:
2);
%色差信号
[mn]=size(I1);
%形成ti1*ti2个8*8块
t1=8;
ti1=1;
while(t1<
(m+8))
t1=t1+8;
ti1=ti1+1;
t2=8;
ti2=1;
while(t2<
(n+8))
t2=t2+8;
ti2=ti2+1;
end
time_s=0;
ti1-2
forj=0:
ti2-2
P1=I1(k*8+1:
k*8+8,j*8+1:
j*8+8);
I1_1(k*8+1:
j*8+8)=dct8x8(P1,my);
%亮度信号分块量化
P2=I2(k*8+1:
I2_1(k*8+1:
j*8+8)=dct8x8(P2,miq);
%色差信号分块量化
time_s=time_s+1;
I1_1
I2_1
my_I=AC_DC(I1_1)%亮度信号的编码序列
miq_I=AC_DC(I2_1)%色差信号的编码序列
2.Dct8x8子程序
functionI=dct8x8(P,m)%定义DCT量化子程序
C=dctmtx(8);
K=C*P*C'
K=K./m;
%量化
K(abs(K)<
0.03)=0;
I=K;
3.AC和DC
functionImageBitSeq=AC_DC(CoefAfterQ)
[Row,Col]=size(CoefAfterQ);
BlockNumber=Row*Col/64;
%%8*8分块数
%%把CoefAfterQ分成8*8的块得分块矩阵CoefBlock(三维)
m=0;
forrow=1:
Row/8
forcol=1:
Col/8
m=m+1;
CoefBlock(:
:
m)=CoefAfterQ(((row-1)*8+1):
(row*8),((col-1)*8+1):
(col*8));
end
m;
%%把量化后各个分块的DC系数存放到行矩阵DC中
DC(m)=0;
m
DC(i)=CoefBlock(1,1,i);
DC;
%%求由各个DC系数的差值组成的行矩阵DCdif
DCdif(BlockNumber)=0;
DCdif
(1)=DC
(1);
fori=2:
BlockNumber
DCdif(i)=DC(i)-DC(i-1);
DCdif;
%%用行矩阵DCdif中的差值替换原来系数矩阵CoefBlock中各个分块的DC系数
forj=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信工程 图像 处理 实验 报告