图像的数字化与显示
学院__物电__ 班级__11(4)__ 学号_____11223325_____ 姓名___唐天泽____
摘要:图像的数学描述和图像数字化的方法; 图像量化中的标量量化和向量量化方法; 常用的数字化图像输入/输出设备。 关键词:数学描述; 量化;
输入/输出设备。 1.引言
图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。 2. 数字图像介绍
数字图像,又称作数码图像或数位图像,是二维图像用有限数字数值像素的表示。由数组或矩阵表示,其光照位置和强度都是离散的。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。
像素(或像元,Pixel)是数字图像的基本元素,像素是在模拟图像数字化时对连续空间进行离散化得到的。每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值。
通常,像素在计算机中保存为二维整数数组的光栅图像,这些值经常用压缩格式进行传输和储存。
数字图像可以许多不同的输入设备和技术生成,例如数码相机、扫描仪、坐标测量机、seismographic profiling、airborne radar等等,也可以从任意的非图像数据合成得到,例如数学函数或者三维几何模型,三维几何模型是计算机图形学的一个主要分支。数字图像处理领域就是研究它们的变换算法。
2.1 图像种类
每个图像的像素通常对应于二维空间中一个特定的'位置',并且有一个或者多个与那个点相关的采样值组成数值。根据这些采样数目及特性的不同数字图像可以划分为:
二值图像 (Binary Image): 图像中每个像素的亮度值(Intensity)仅可以取自0到1的图像。 灰度图像 (Gray Scale Image),也称为灰阶图像: 图像中每个像素可以由0(黑)到255(白)的亮度值表示。0-255之间表示不同的灰度级。 彩色图像 (Color Image):每幅彩色图像是由三幅不同颜色的灰度图像组合而成,一个为红色,一个为绿色,另一个为蓝色。 伪彩色图像(false-color) multi-spectral thematic 立体图像 (Stereo Image):立体图像是一物体由不同角度拍摄的一对图像,通常情况下我们可以用立体像计算出图像的深度信息。 三维图像 (3D Image):三维图像是由一组堆栈的二维图像组成。每一幅图像表示该物体的一个横截面。 数字图像也用于表示在一个三维空间分布点的数据,例如计算机断层扫描(en:tomographic,CT)设备生成的图像,在这种情况下,每个数据都称作一个体素。 2.2图像显示
目前比较流行的图像格式包括光栅图像格式BMP、GIF、JPEG、PNG等,以及矢量图像格式WMF、SVG等。大多数浏览器都支持GIF、JPG以及PNG图像的直接显示。SVG格式作为W3C的标准格式在网络上的应用越来越广。 3. 图像数字化仿真试验 3.1二值图像
二值图像是指数据矩阵中的元素只是0或1,读入matlab也是一个二维矩阵。值得注意的是,像素点取值只限于0,1。
图像二值化流程:
图像二值化流程图
用j=im2bw(x);来对灰度图像到二值图像的转换。转换结果为:
灰度图像转二值图像对比图
3.2创建索引图像
根据数据矩阵和图像像素颜色匹配关系,MATLAB中图像可分为:索引图像、灰度图像、二值图像和RGB图像。
索引图像:它的数据信息包括一个数据矩阵和一个双精度色图矩阵,它的数据矩阵中的值直接指定该点的颜色为色图矩阵中的某一种。色图矩阵中,每一行表示一种颜色,每行有三个数据,分别表示该种颜色中红、绿、蓝的比例情况,
所有元素值都在[0,1]内。
用X = grayslice(I,n)函数来实现,转换后得到的图像为:
索引图像
4. 小结
通过本次课程设计,使自己对MATLAB设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。
参考文献
[1]郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社
[2]程卫国,冯峰,姚东,徐听.MATLAB5.3应用指南[M].北京:人民邮电出版社 [3]陈杨.MATLAB 6.X图像编程与图像处理[M].西安:西安电子科技大学出版社 [4]杨行峻,迟惠生等. 语音信号数字处理.北京:电子工业出版社,1995.
附录
function file_Callback(hObject, eventdata, handles)
-------------------------------------------------------- %文件打开程序
function open_Callback(hObject, eventdata, handles) [name,path]=uigetfile({'*.bmp'},'载入图像'); if isequal(name,0)|isequal(path,0) errordlg('没有选中文件','出错'); return; else
x=imread([path,name]); axes(handles.axes1); imshow(x);
handles.img=x;
handles.noise_img=x; guidata(hObject,handles) end
---------------------------------------------------
function save_Callback(hObject, eventdata, handles) %文件保存
[filename,pathname] = uiputfile('*.bmp','图片保存为'); if isequal([filename,pathname],[0,0]) errordlg('没有保存','出错'); return; else
file=strcat(pathname,filename); (handles.axes2); i=getimage(gca); imwrite(i,file); end
-----------------------------------------------------
function huidu_Callback(hObject, eventdata, handles) %灰度处理
axes(handles.axes2); if isrgb(handles.img)
y=rgb2gray(handles.img); %RGB?????????? imshow(y); else
msgbox('这已经是灰度图像','转换失败'); end
------------------------------------------------------
function liangdu_Callback(hObject, eventdata, handles) %亮度处理
prompt={'输入参数1','输入参数2','输入gamma'}; defans={'[0 0.7]','[0 1]','1'};
p=inputdlg(prompt,'输入参数',1,defans); p1=str2num(p{1}); p2=str2num(p{2}); p3=str2num(p{3}); gamma=p3;
x=(handles.img);
y=imadjust(x,p1,p2,gamma); axes(handles.axes2); imshow(y);
-------------------------------------------f