文档库 最新最全的文档下载
当前位置:文档库 › 数字图像处理4

数字图像处理4

数字图像处理4
数字图像处理4

数字图像处理上机报告

题目:数字图像处理上机报告(第4次)学校:中国地质大学(武汉)

指导老师:傅华明

姓名:张慧

学号: 20111001090

班级: 071112-11

日期: 2013年11月18日

目录

1平移霍夫曼编码 (3)

2上机小结 (10)

数字图像处理上机报告

1平移霍夫曼编码

题目要求:

对图4实施平移哈夫曼编码和解码,计算图像熵、平均码长和冗余度;

图4

算法设计:

统计整幅图像,得

重复3、4,直

程序代码:

1.构造初始图像

function [ out_img ] = Img_Init( )

% 构造初始图像

out_img = [5,7,2,2,1,5,4,1

4,4,4,1,1,2,2,1

3,4,5,3,4,4,4,4

0,3,3,5,6,5,0,3

1,1,2,2,1,1,2,2

6,5,5,7,2,3,4,4

3,4,1,1,2,2,1,5

5,0,3,1,2,4,1,1];

end

2.对灰度值进行统计且计算各灰度值频率

function [ sta_data,p ] = Calculate_p( input_img )

%对灰度值进行统计&计算各灰度值频率

sta_data(1:8) = 0;%初始化统计数组

fori = 1:8

for j = 1:8

d = input_img(i,j);

sta_data(d+1) = sta_data(d+1)+1;

end

end

p(1:8) = sta_data(1:8)/(sum(sta_data(1:8)));%计算各灰度值频率end

3.对灰度值进行平移霍夫曼编码

function [code_out] = Huffman(s,p)

%对灰度值进行平移霍夫曼编码

%s为各元素名称 p为各元素概率

[M,N]=size(s);

if (M==1)

ele=s';

else

ele=s;

end

[M,N] = size(ele);

[C,R] = size(p);

if M~=R

return;

end

%建立cell型变量

code = cell(M,4); %建立编码cell

code_out = cell(M,3); %建立输出cell

coding = cell(M,2); %建立编码过程中用到的cell

fori=1:M

code{i,1} = ele(i,:); %第一列为元素名称

code{i,2} = []; %第二列为编码

code{i,3} = p(i); %第三列为元素概率

code{i,4} = []; %第四列为元素概率排行

coding{i,1} = p(i); %第一行为元素概率

coding{i,2} = i; %第二行表示此概率由哪些元素组成

end

sum = 0;

pr = [];

fori = 1:(M/2)

[m,pos] = Cell_min(coding(:,1)); %找出最小元素的值和位置

sum = sum+m; %将最小一半的元素概率相加

coding{pos,1} = 1+i; %将概率改为一个大于1的值使其不会再次被选中pr = [pr,coding{pos,2}]; %将概率代表的元素加入pr中

end

coding{pos,1} = sum; %最后一个元素的概率值等于所有元素概率相加coding{pos,2} = pr; %次元素代表了较小的一半元素

[m,pos] = Cell_min(coding(:,1)); %找出最小值

while (m<1) %若最小值小于1(编码尚未完成)

[m1,pos1] = Cell_min(coding(:,1)); %找出最小值

temp_p = coding{pos1,1}; %记录下最小概率

coding{pos1,1} = 2; %将概率改为2,则以后不会再次取到 [m2,pos2] = Cell_min(coding(:,1)); %找出次小值

coding{pos2,1} = coding{pos2,1}+temp_p;

%最小概率和次小概率相加得到新元素概率

[k,Mp] = size(coding{pos1,2});%考虑最小概率包含了哪些元素

for i = 1:Mp %在这些元素的编码前加1

code{coding{pos1,2}(i),2} = [1,code{coding{pos1,2}(i),2}]; end

[k,Mp] = size(coding{pos2,2}); %考虑次小概率包含了哪些元素

for i = 1:Mp %在这些元素的编码前加0

code{coding{pos2,2}(i),2} = [0,code{coding{pos2,2}(i),2}]; end

%新元素包含了次小和最小元素包含的所有元素coding{pos2,2} = [coding{pos2,2},coding{pos1,2}];

[m,pos] = Cell_min(coding(:,1)); %找出当前最小值,继续循环

end

fori = 1:M

code_out(i,1:3) = code(i,1:3); %输出cell前3列等于编码cell前3列

end

temp_code = cell(M,1); %初始化一个cell用于记录编码

fori = 1:M

[m,pos] = Cell_min(code(:,3)); %找出最小概率编码

temp_code{i} = code{pos,2}; %将其储存在temp_code

code{pos,4} = i; %标记这个元素是第几小的

code{pos,3} = 2; %将元素概率改为2,防止再次被取到

end

for i = 1:M %若此元素是较小的一半,则它的编码为本身编码加上较大元素的编码if code{i,4}<=M/2

code_out{i,2} = [code_out{i,2},temp_code{code{i,4}+M/2}];

end

end

end

4.对图像进行编码

function [img_out] = Encoding(img_in,codeword)

%遍历图像,查表确定码字

[M,N] = size(img_in);

[C,R] = size(codeword);

img_out = cell(M,N);

fori = 1:M

for j = 1:N

data = img_in(i,j);

for k = 1:C

ifcodeword{k,1}==data

img_out{i,j} = codeword{k,2};

end

end

end

end

end

5.找出cell中的某列元素的最小值和位置(用于辅助编码)function [m,pos] = Cell_min(data)

%找出cell中的某列元素的最小值和位置

[M,N] = size(data);

pos = -1;

fori = 1:M

d(i) = data{i}(1,1);

end

Min = min(d); %找出最小值

for i=1:M %遍历矩阵,找出最小值所在位置

if d(i)==Min

m = d(i);

pos = i;

end

end

6.对图像进行解码

function [img_out] = Decoding(img_in,codeword) %遍历编码图像,查表确定数值

[M,N] = size(img_in);

[C,R] = size(codeword);

img_out = zeros(M,N);

fori = 1:M

for j=1:N

data = img_in{i,j};

for k = 1:C

if size(data)==size(codeword{k,2})

ifcodeword{k,2}==data

img_out(i,j) = codeword{k,1};

end

end

end

end

end

end

7.计算熵、平均码长、冗余度

function [H,L,R] = Calculating(codeword)

[M,N] = size(codeword);

H=0; L=0;

%计算熵

fori = 1:M

H = H+codeword{i,3}*log2(1/codeword{i,3});

end

%计算平均码长

fori = 1:M

[m,n] = size(codeword{i,2});

L = L+codeword{i,3}*n;

end

R = L/H-1; %计算冗余度

end

运行结果:

根据以上编写的函数,新建一脚本文件(Task_4_1),执行如下代码即可实现题目要求:clear;

out_img = Img_Init( );% 构造初始图像

% 对灰度值进行统计&计算各灰度值频率

[ sta_data,p ] = Calculate_p( out_img );

[codeword] = Huffman(0:7,p); %对灰度值进行平移霍夫曼编码

[coded_Img_out] = Encoding(Img_Init ,codeword);%对图像进行编码

[Img_out] = Decoding(coded_Img_out,codeword); %对图像进行解码

[H,L,R] = Calculating(codeword); %计算熵、平均码长、冗余度

结果展示:

各灰度统计值及其概率

输出编码(灰度值、编码、概率)H:熵 L:平均码长 R:冗余度

编码后图像

解码后图像与原图像对比

成功实施了对图像的平移霍夫曼编码和解码

注:由于Matlab统计灰度概率时计算精度有限,故而最终概率总合可能不为1,这样就导致最终编码结果和人编码结果略有不同。

2上机小结

在此次上机的过程中,我进一步了解了Matlab的使用方法,在编程过程中,曾经使用了过多的矩阵变量,使代码杂乱,无法检查出错误,最终学习了Matlab中cell型变量的使用方法和规范,能够在自己的函数中正确使用cell型变量大大优化了程序,使代码更加简洁、精简。尽管这样,在此次上机过程中,平移霍夫曼代码编写略显混乱,使用了过多不必要的变量,也使得可读性大大降低,在之后的编程中要尽量避免这种错误再次发生。

通过此次上机实验,我又一次认识到Matlab功能的强大,今后编程中遇到问题是,应更多的考虑借助其强大的功能(特殊类型变量,专用库函数)来解决问题。

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

数字图像处理大作业

大作业指导书 题目:数字图像处理 院(系):物联网工程学院 专业: 计算机 班级:计算机1401-1406 指导老师: 学号: 姓名: 设计时间: 2016-2017学年 1学期

摘要 (3) 一、简介 (3) 二、斑点数据模型 .参数估计与解释 (4) 三、水平集框架 (5) 1.能量泛函映射 (5) 2.水平集传播模型 (6) 3.随机评估方法 (7) 四、实验结果 (8) 五、总结 (11)

基于水平集方法和G0模型的SAR图像分割 Abstract(摘要) 这篇文章提出了一种分割SAR图像的方法,探索利用SAR数据中的统计特性将图像分区域。我们假设为SAR图像分割分配参数,并与水平集模型相结合。分布属于G分布中的一种,处于数据建模的目的,它们已经成功的被用于振幅SAR图像中不同区域的建模。这种统计数据模型是驱动能量泛函执行区域映射的基础,被引用到水平集传播数值方案中,将SAR 图像分为均匀、异构和极其异构区域。此外,我们引入了一个基于随机距离和模型的评估过程,用于量化我们方法的鲁棒性和准确性。实验结果表明,我们的算法对合成和真实SAR 数据都具有准确性。+ 简介 1、Induction(简介) 合成孔径雷达系统是一种成像装置,采用相干照明比如激光和超声波,并会受到斑点噪声的影响。在SAR图像处理过程中,返回的是斑点噪声和雷达切面建模在一起的结果。这个积性模型(文献[1])因包含大量的真实SAR数据,并且在获取过程中斑点噪声被建模为固有的一部分而被广泛应用。因此,SAR图像应用区域边界和目标检测变得更加困难,可能需要斑点去除。因此,斑点去除是必需的,有效的方法可以在文献[2][3][4][5][6][7][8][9][10]中找到。 对于SAR图像分割,水平集方法构成一类基于哈密顿-雅克比公式的重要算法。水平集方法允许有效的分割标准公式,从文献[12]中讨论的传播函数项可以得到。经典方法有着昂贵的计算成本,但现在的水平集的实现配置了有趣的低成本的替换。 水平集方法的一个重要方面,比如传播模型,可以用来设计SAR图像的分割算法。这个传播函数能够依据伽马和伽马平方根法则将斑点统计进行整合,函数已经被广泛地应用于SAR图像中的均质区域分割。Ayed等基于伽马分布任意建模,设计方案将SAR图像分成多个均质区域。尽管多区分割问题已经解决,该方案人需要一定数量的区域作为输入。Shuai 和Sun在文献[16]中提出对这个方法进行了改进,他们使用了一个有效的传播前收敛判断。Marques等引入了一个类似于含有斑点噪声图像中目标检测的框架,将基于本地区域的斑点噪声统计融合进去。这些作者采用伽马平方根对均质区域进行建模并用一个自适应窗口方案检测本地的同质性。 最近,新的SAR数据模型比如K,G,显示出了优势。经典法则受限于均质区域特性的描述,而最近的法则展现出了在数据建模中更有吸引力的特性。法则允许同构、异构和高度异构幅度SAR数据的建模。这个分布族提供了一组参数,可以描述SAR图像中的不同区域。分布的参数信息,可以被广泛的应用于设计SAR图像处理和分类技术。在文献[21]中,Mejail 等人介绍了SAR监督数据分类器,它基于其参数映射并实现了有趣的结果。Gambini等人在文献[22]中使用这个分布的一个参数来量化SAR数据的粗糙度,通过活动轮廓和B样条差值来检测边缘。然而,这种技术需要一个初始分割步骤,并受拓扑限制。一般来说,活动轮廓方法不能解决不连续区域分割的问题。 本文介绍了一种新的水平集算法来实现SAR图像中均质、异构和极其异构区域分割的目标。由于分布能够描述SAR图像的同质性和规模,我们的方法采用分布对斑点数据进行建模。这些分布参数基于每一个域点进行估计,通过这些信息,我们可以在水平集分割框架内得到一个能量泛函来驱动向前传播(front propagation)。该泛函以最大化不同区域平均能量间的差异作为结束。最终水平集阶段以能量带作为依据得到SAR图像的分割结果。

数字图像处理实验报告完整版

数字图像处理 实验一 MATLAB数字图像处理初步 一、显示图像 1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 实验结果如下图: 源代码: >>I=imread('lily.tif') >> whos I >> imshow(I) 二、压缩图像 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。7.用imread()读入图像Sunset.jpg和Winter.jpg; 8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小; 9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。 其中9的实验结果如下图:

源代码: 4~6(接上面两个) >>I=imread('lily.tif') >> imfinfo 'lily.tif'; >> imwrite(I,'lily.jpg','quality',20); >> imwrite(I,'lily.bmp'); 7~9 >>I=imread('Sunset.jpg'); >>J=imread('Winter.jpg') >>imfinfo 'Sunset.jpg' >> imfinfo 'Winter.jpg' >>figure(1),imshow('Sunset.jpg') >>figure(2),imshow('Winter.jpg') 三、二值化图像 10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。实验结果如下图: 源代码: >> I=imread('lily.tif') >>gg=im2bw(I,0.4); F>>igure, imshow(gg)

数字图像处理实验报告

数字图像处理实验报告 实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方 法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread, imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray() 将其 转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程和调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰

度直方图与原灰度直方图的区别。 2) 对B 进行直方图均衡化处理,试比较与源图的异同。 3) 对B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。 图1.1 分段线性变换函数 三、实验原理与算法分析 1. 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。 1) 图像反转 灰度级范围为[0, L-1]的图像反转可由下式获得 r L s --=1 2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围, 如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换: s = c log(1 + r ),c 为常数,r ≥ 0 3) 幂次变换: 0,0,≥≥=γγc cr s 4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

数字图像处理大作业

1、下图是一用于干涉原理进行测试的干涉场图像,要求判读条纹的间距,请给 出图像处理的方案并说明每一步的作用及其对其它处理步骤可能产生的影响。 解:步骤与思路: ○1.进行模糊处理,消除噪声 ○2.边缘检测,进行图像增强处理 ○3.二值化图像,再进行边缘检测,能够得到很清晰的边界。 ○4.采用横向标号法,根据值为1像素在标号中的相邻位置可以确定间距 I=imread('xz mjt.bmp'); I1=medfilt2(I); %对图像中值滤波 imshow(I1); [m,n]=size(I1); for i=1:m for j=1:n if(I1(i,j)<100) %阈值为100 I1(i,j)=255; else I1(i,j)=0; %进行二值化 end end end figure; imshow(I1);

Y1=zeros(1,25); y2=y1; c=y2; i=100; for j=1:1200 if (I1(i,j)==255&&I1(i,j+1)==0) Y1=j+1; end if (I1(i,j)==0&&I1(i,j+1)==255) Y2=j; end end for i=1:25 c=Y2(i)-Y1(i) end c %找出每两个条纹之间的距离

2. 现有8个待编码的符号m0,……,m7,它们的概率分别为0.11,0.02,0.08,0.04,0.39,0.05,0.06,0.25,利用哈夫曼编码求出这一组符号的编码并画出哈夫曼树。 3. 请以图像分割方法为主题,结合具体处理实例,采用期刊论文格式,撰写一篇小论文。

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

数字图像处理大作业

大作业要求 1.数字图像处理中的图像增强、图像分割、数学形态学、图像编码这几个章节中,围绕你所感兴趣的题目写一篇综述。 2.要求: (1)在中国知网上下载5篇以上相关文章,结合上课所学内容,确定综述的内容。(2)文字3000字以上,包含 a. 课题背景和概述 b. 国内外研究现状 c. 技术应用(可以实现哪些功能,实 现的方法及结果 d. 结论 e. 学习体会 f.参考文献 (3)综述的排版: 正文层次格式如下: 1(空两格)×××××(居中,三号宋体,加粗,占4行) 1.1×××(左顶格,四号宋体,加粗,占 2.5行,不接排) 1.1.1×××(左顶格,小四号宋体,加粗,占2行,不接排) a.(左空两格,a.后空一格)×××(小4号宋体,加粗) (正文)×××××(小4 号宋体,接排)

(1)(左空两格,(1)后空一格)×××(小4号宋体,加粗) (正文)×××××(小4号宋体,接排) 1)(左空两格,1)后空一格)(小4号宋体,加粗) (正文)×××××(小4号宋体,接排) 正文中段落一律段前、段后0磅,行距为20磅,对齐方式:两端对齐。小4号字体。 论文中的图和表居中,并且有图题和表题。 例如: 图 1 主站工作过程(5号字体,加粗) 表1 不同总线速率下从站的延迟时间(5号字体,加粗) 速率(Kbit/s ) 9.6 19.2 93.75 187.5 500 1500 1200SDR minT (bit T ) 11 11 11 11 11 11 11 SDR maxT (bit T ) 60 60 60 60 100 150 800 参考文献按照下面形式给出: 参考文献 (居中,三号,宋体,加粗,占4行)

数字图像处理——彩色图像实验报告

6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * * f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %rgb图像转换成8色索引图像,不采用抖动方式 [X1,map1]=rgb2ind(f,8,'nodither'); figure,imshow(X1,map1); %采用抖动方式转换到8色索引图像 [X2,map2]=rgb2ind(f,8,'dither'); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f); %f转换为灰度图像 g1=dither(g);%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);%显示灰度图像 figure,imshow(g1);%显示抖动处理后的二值图像 程序运行结果:

彩色立方体原图 不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像 灰度图像抖动处理后的二值图像

(2)彩色空间转换 f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %转换到NTSC彩色空间 ntsc_image=rgb2ntsc(f); figure,imshow(ntsc_image(:,:,1));%显示亮度信息figure,imshow(ntsc_image(:,:,2));%显示色差信息figure,imshow(ntsc_image(:,:,3));%显示色差信息 %转换到HIS彩色空间 hsi_image=rgb2hsi(f); figure,imshow(hsi_image(:,:,1));%显示色度信息figure,imshow(hsi_image(:,:,2)); %显示饱和度信息figure,imshow(hsi_image(:,:,3));%显示亮度信息 程序运行结果: 原图 转换到NTSC彩色空间

《数字图像处理》复习大作业及答案

2014年上学期《数字图像处理》复习大作业及参考答案 ===================================================== 一、选择题(共20题) 1、采用幂次变换进行灰度变换时,当幂次取大于1时,该变换是针对如下哪一类图像进行增 强。(B) A 图像整体偏暗 B 图像整体偏亮 C图像细节淹没在暗背景中D图像同时存在过亮和过暗背景 2、图像灰度方差说明了图像哪一个属性。(B ) A 平均灰度 B 图像对比度 C 图像整体亮度D图像细节 3、计算机显示器主要采用哪一种彩色模型( A ) A、RGB B、CMY或CMYK C、HSI D、HSV 4、采用模板[-1 1]T主要检测( A )方向的边缘。 A.水平 B.45? C.垂直 D.135? 5、下列算法中属于图象锐化处理的是:( C ) A.低通滤波 B.加权平均法 C.高通滤波 D. 中值滤波 6、维纳滤波器通常用于( C ) A、去噪 B、减小图像动态范围 C、复原图像 D、平滑图像 7、彩色图像增强时, C 处理可以采用RGB彩色模型。 A. 直方图均衡化 B. 同态滤波 C. 加权均值滤波 D. 中值滤波 8、__B__滤波器在对图像复原过程中需要计算噪声功率谱和图像功率谱。 A. 逆滤波 B. 维纳滤波 C. 约束最小二乘滤波 D. 同态滤波 9、高通滤波后的图像通常较暗,为改善这种情况,将高通滤波器的转移函数加上一常数量以 便引入一些低频分量。这样的滤波器叫B。 A. 巴特沃斯高通滤波器 B. 高频提升滤波器 C. 高频加强滤波器 D. 理想高通滤波器 10、图象与灰度直方图间的对应关系是 B __ A.一一对应 B.多对一 C.一对多 D.都不 11、下列算法中属于图象锐化处理的是:C A.低通滤波 B.加权平均法 C.高通滤 D. 中值滤波 12、一幅256*256的图像,若灰度级数为16,则存储它所需的比特数是:( A ) A、256K B、512K C、1M C、2M 13、噪声有以下某一种特性( D ) A、只含有高频分量 B、其频率总覆盖整个频谱 C、等宽的频率间隔内有相同的能量 D、总有一定的随机性 14. 利用直方图取单阈值方法进行图像分割时:(B) a.图像中应仅有一个目标 b.图像直方图应有两个峰 c.图像中目标和背景应一样大 d. 图像中目标灰度应比背景大 15. 在单变量变换增强中,最容易让人感到图像内容发生变化的是( C )

武汉科技大学 数字图像处理实验报告

二○一四~二○一五学年第一学期电子信息工程系 实验报告书 班级:电子信息工程(DB)1102班姓名 学号: 课程名称:数字图像处理 二○一四年十一月一日

实验一图像直方图处理及灰度变换(2学时) 实验目的: 1. 掌握读、写、显示图像的基本方法。 2. 掌握图像直方图的概念、计算方法以及直方图归一化、均衡化方法。 3. 掌握图像灰度变换的基本方法,理解灰度变换对图像外观的改善效果。 实验内容: 1. 读入一幅图像,判断其是否为灰度图像,如果不是灰度图像,将其转化为灰度图像。 2. 完成灰度图像的直方图计算、直方图归一化、直方图均衡化等操作。 3. 完成灰度图像的灰度变换操作,如线性变换、伽马变换、阈值变换(二值化)等,分别使用不同参数观察灰度变换效果(对灰度直方图的影响)。 实验步骤: 1. 将图片转换为灰度图片,进行直方图均衡,并统计图像的直方图: I1=imread('pic.jpg'); %读取图像 I2=rgb2gray(I1); %将彩色图变成灰度图 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('灰度图'); subplot(3,2,4); imhist(I2); %统计直方图 title('统计直方图'); subplot(3,2,5); J=histeq(I2); %直方图均衡 imshow(J); title('直方图均衡'); subplot(3,2,6); imhist(J); title('统计直方图');

原 图 灰度图 01000 2000 3000统计直方图 100200直方图均衡 0统计直方图 100200 仿真分析: 将灰度图直方图均衡后,从图形上反映出细节更加丰富,图像动态范围增大,深色的地方颜色更深,浅色的地方颜色更前,对比更鲜明。从直方图上反应,暗部到亮部像素分布更加均匀。 2. 将图片进行阈值变换和灰度调整,并统计图像的直方图: I1=imread('rice.png'); I2=im2bw(I1,0.5); %选取阈值为0.5 I3=imadjust(I1,[0.3 0.9],[]); %设置灰度为0.3-0.9 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('阈值变换'); subplot(3,2,5); imshow(I3); title('灰度调整'); subplot(3,2,2); imhist(I1); title('统计直方图'); subplot(3,2,4);

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 2015年6月18日

目录 实验一图像的读取、存储和显示 (2) 实验二图像直方图分析 (6) 实验三图像的滤波及增强 (15) 实验四噪声图像的复原 (19) 实验五图像的分割与边缘提取 (23) 附录1MATLAB简介 (27)

实验一图像的读取、存储和显示 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像的显示。 二、实验原理 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 三、实验设备 (1) PC计算机 (2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片 四、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower.jpg语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;

西安交通大学大学数字图像处理大作业

数字图像处理

目录 作业一 (1) 一作业要求 (1) 二源代码 (1) 三运行结果 (3) 作业二 (5) 一作业要求 (5) 二算法描述 (5) 三源代码 (7) 四运行结果 (10)

作业一 一作业要求 在图像的空间域滤波操作中,会出现有部分掩膜矩阵在图像外面的情况,所以需要给图像先加入一个边界,执行完操作之后,再去掉这个边界,保证图像中所有的像素都参与矩阵运算。 二源代码 byte[,] filter(byte[,]f,float[,]mask) { int w = f.GetLength(0); int h = f.GetLength(1); byte[,] g = new byte[w,h]; int M = mask.GetLength(0)/2; int N = mask.GetLength(1)/2; for (int y=N;y255) return 255; if (v<0) return 0; return (byte)v;

} float[,] averagingMask(intM,int N) { float[,] mask = new float[2*M+1,2*N+1]; for (int m=-M;m<=M;m++) for (int n=-N;n<=N;n++) mask[M+m,N+n] = 1.0f/((2*M+1)*(2*N+1)); return mask; } byte[,] addboard(byte[,] f,intM,int N) { int w=f.GetLength(0); int h=f.GetLength(1); intgw=w+2*M; intgh=h+2*N; byte[,] g=new byte[gw,gh]; //add top board and bottom board for(inti=0;i

数字图像处理实验一

数字图像处理—实验一 一.实验内容: 图像灰度变换 二.实验目的: 学会用Matlab软件对图像灰度进行变换;感受各种不同的灰度变换方法对最终图像效果的影响。 三.实验步骤: 1.获取实验用图像:rice.jpg. 使用imread函数将图像读入Matlab。 程序: clc;clear; figure; subplot(4,4,1); i = imread('rice.png'); i = im2double(i); imshow(i);title('1'); 2.产生灰度变换函数T1,使得: 0.3r r < 0.35 s = 0.105 + 2.6333(r – 0.35) 0.35 ≤r ≤0.65

1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg进行处理,使用imwrite函数保存处理后的新图像。程序: subplot(4,4,2); r=[0:0.001:1]; s=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1 +0.3*(r-1)); plot(r,s);title('2p'); subplot(4,4,3); T1=[i<0.35].*i*0.3+[i<=0.65].*[i>=0.35].*(0.105+2.6333*(i-0.35))+[i>0.65].*( 1+0.3*(i-1)); imshow(T1);title('2i'); imwrite(T1,'rice_T1.jpg','jpg');

3.产生灰度变换函数T2,使得: 用T2对原图像rice.jpg进行处理,使用imwrite保存处理后的新图像。 %3 subplot(4,4,4); r = [0:0.001:1];

数字图像处理大作业报告

数字图像处理 实验报告 实验选题:选题二 组员: 学号: 班级: 指导老师: 实验日期:2019年5月22日

一、实验目的及原理 1.识别出芯片的引脚 2.熟悉并掌握opencv的某些函数的功能和使用方法 原理:通过滤波、形态学操作得到二值图,再在二值图中设置条件识别引脚部分。 二、实现方案 对图片滤波、调节阈值做边缘检测过滤掉一部分图片中干扰元素;然后通过膨胀、腐蚀操作来减少引脚的空心部分;再通过findContours()函数找到引脚的边缘并得到轮廓的点集,设置特定的长宽比和矩形面积识别引脚部分。 三、实验结果

四、源码 #include #include #include"opencv2/highgui/highgui.hpp" #include"opencv2/imgproc/imgproc.hpp" using namespace std; using namespace cv; int main(int argv, char **argc) { //载入图片 Mat srtImag = imread("2.jpg"); Mat G_blur = srtImag.clone(); //降噪 blur(G_blur, G_blur, Size(5, 5)); //imshow("降噪", G_blur); //Canny边缘检测 Mat Canny_Imag = G_blur; Canny_Imag = Canny_Imag > 176; Canny(G_blur, Canny_Imag, 300, 50, 3); //imshow("边缘检测", Canny_Imag); //膨胀 Mat element = getStructuringElement(MORPH_RECT, Size(10, 10)); dilate(Canny_Imag, Canny_Imag, element); //imshow("膨胀", Canny_Imag); //腐蚀 Mat element_1 = getStructuringElement(MORPH_RECT, Size(11, 11)); erode(Canny_Imag, Canny_Imag, element_1); //imshow("腐蚀", Canny_Imag); //查找轮廓 vector>contours; vectorhierarchy; findContours(Canny_Imag, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE); vector> contour_s(contours.size());//该数组共有contours.size()个轮廓的点集 vector Rec_s(contours.size());//逼近多边形的点集数组

数字图像处理实验四

电子工程学院数字图像处理课程实验报告

g = imbinarize(f, T/255); %二值化图像阈值分割figure(1); subplot(221); imshow(f); title('原图像'); subplot(222); imshow(g); title('basic global thresholding'); se=strel('ball',8,8); % 创建球体,半径8 f1=imdilate(I,se); %膨胀 subplot(223) imshow(f1);title('膨胀后图像'); f2=imbinarize(f1); %二值化图像阈值分割subplot(224) imshow(f2);title('分割标记后图像');

%Otsu方法二值化图像 I = imread('C:\picture\256.tif'); J = imnoise(I, 'salt & pepper',0.02); %添加噪声figure(2); subplot(231);imshow(I);title('原图像'); subplot(232);imshow(J);title('加椒盐噪声后的图像'); k = medfilt2(J,[5 5]); subplot(233);imshow(k);title('5x5模板中值滤波') T=graythresh(k); %最大类间方差法找到图片的一个合适的阈值g=imbinarize(f,T); subplot(234);imshow(g);title('Otsu方法二值化图像'); se=strel('ball',8,8); % 创建球体,半径8 f1=imdilate(I,se); subplot(235) imshow(f1);title('膨胀后图像'); f2=imbinarize(f1); [f2,N]=bwlabel(f2,8); subplot(236) imshow(f2);title('分割标记后图像');

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作 (4) :实验目的 (4) :实验任务和要求 (4) :实验步骤和结果 (5) :结果分析 (8) 实验二:图像的灰度变换和直方图变换 (9) :实验目的 (9) :实验任务和要求 (9) :实验步骤和结果 (9) :结果分析 (13) 实验三:图像的平滑处理 (14) :实验目的 (14) :实验任务和要求 (14) :实验步骤和结果 (14) :结果分析 (18) 实验四:图像的锐化处理 (19) :实验目的 (19) :实验任务和要求 (19) :实验步骤和结果 (19) :结果分析 (21)

实验一:数字图像的基本处理操作 :实验目的 1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。:实验任务和要求 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分 成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分 别显示,注上文字标题。 3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换, 显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。 4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里 叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的 对应关系。 :实验步骤和结果 1.对实验任务1的实现代码如下: a=imread('d:\'); i=rgb2gray(a); I=im2bw(a,; subplot(1,3,1);imshow(a);title('原图像'); subplot(1,3,2);imshow(i);title('灰度图像'); subplot(1,3,3);imshow(I);title('二值图像'); subplot(1,3,1);imshow(a);title('原图像'); 结果如图所示:

数字图像处理大作业-昆明理工大学-尚振宏

数字图像基础 课程名称:数字图像基础 学院:信息工程与自动化学院 专业年级: 2010级计算机系班 学号: 2010104052 学生姓名: 指导教师:尚振宏 日期: 2013-6-11 目录

目录 (1) 1前言 (2) 2图像分割的方法简介 (3) 2.1迭代法 (3) 2.2类间最大距离法 (3) 2.3最大熵法 (4) 2.4最大类内类间方差比法 (4) 2.5局部阈值法 (5) 2.6均匀性度量法 (6) 3简单算法及其实现 (6) 3.1最优阈值算法 (6) 3.2 Canny算法 (8) 4、试验对比 (10) 4.1迭代法试验对比 (10) 4.2类间最大距离法试验对比 (10) 4.3最大熵法试验对比 (11) 4.4最大类内类间方差比法试验对比 (11) 4.5局部阈值法试验对比 (12) 4.6均匀性度量法试验对比 (12) 5、总结体会 (13) 6、参考文献 (13) 7、附录 (14) 7.1迭代法代码 (14) 7.2类间最大距离法代码 (14) 7.3最大熵法代码 (15) 7.4最大类内类间方差比法代码 (16) 7.5局部阈值法代码 (18) 7.6均匀性度量法代码 (18)

1、前言 图像分割是图像处理中的一项关键技术,自20世纪70年代起一直受到人们的高度重视,至今已提出上千种分割算法,但因尚无通用的分割理论,现提出的分割算法大都是针对具体问题的,并没有一种适合所有图像的通用分割算法。另外,还没有制定出选择适用分割算法的标准,这给图像分割技术的应用带来许多实际问题。最近几年又出现了许多新思路、新方法或改进算法。总的来说,图像分割是图像识别和图像分析的基本前提步骤,图像分割的质量好坏直接影响后续图像处理的效果,甚至决定成败。因此,图像分割在数字图像处理技术中占有非常重要的地位。图像分割时指将一副图像分解为若干互不交叠的、有意义的、具有相同性质的区域。好的图像分割应具备以下特征:⑴分割出来的各个区域对某种特性(例如灰度和纹理)而言具有相似性,区域内部是连通的且没有过多小孔。⑵相似区域对分割所依据的性质有明显的差异。⑶区域边界是明确的。图像分割是一个很关键的图像分析技术,是由图像处理进到图像分析的关键步骤.它的目的就是把图像中感兴趣的那部分分割出来供大家研究、处理和分析,一直都是图像技术研究中的热点。但是由于地域的差别,图像分割一直都没有一个比较通用的算法。 在实际图像处理中,一般情况下我们只是注意到图像中那些我们感兴趣的目标,因为只有这部分也就是我们注意到的有用的目标物才能为我们提供高效、有用的信息。而这些目标一般又都对应着图像中某些特定的、具有独特性质的区域。为了把这些有用的区域提取出来供我们人类使用,图像分割这门技术也就应运而生了。我们通常情况下所说的图像分割就是指把图像划分成若干个有意义的区域的过程,每个区域都是具有相近特性的像素的连通集合,一般情况下我们所关注到的那些有用的目标物就存在与这些区域中。研究者们为了识别和分析图像中的那部分我们感兴趣的目标,例如进行特征提取或者测量,就需要将这些相关的区域从图像背景中提取出来。图像分割就能够把图像中的这些有用的区域分割出来,从而把一幅图像分成一系列的有意义的、各具特征的目标或者区域。 图像分割技术主要分为四大类:区域分割,阈值分割,边缘检测和差分法运动分割(主要针对运动图像的分割)。阈值分割是近年来国际领域上的一个新的研究热点,它是一种最简单的图像分割技术,其基本原理就是:通过设定不同的特征阈值点,从而把图像的象素点分为若干类,然后通过阈值点来分割图像,最终把图像中的有用的部分提取出来。本文将对matlab用于图像分割的基本理论进行简要研究,并对当前matlab用于图像分割的最新研

相关文档