博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MATLAB数字图像处理之一:初识数字图像处理
阅读量:5888 次
发布时间:2019-06-19

本文共 4717 字,大约阅读时间需要 15 分钟。

hot3.png

MATLAB数字图像处理初步

一.实验目的

1.掌握MATLAB的基本操作。

2.了解数字图像处理在MATLAB中的基本处理过程。

3.学习图像处理的简单操作方法。

二.实验设备

1.PC机一台;

2.软件matlab;

三.程序设计

1. 图像读取:imread(‘图像路径’)

Help:

imread

Read image from graphics file

Syntax

A = imread(filename, fmt)

[X, map] = imread(…)

[...] = imread(filename)

[...] = imread(URL,…)

[...] = imread(…,Param1,Val1,Param2,Val2…)

2. 图像显示:imshow(‘图像路径’)

Help:

imshow

Display image

Syntax

imshow(I)

imshow(I,[low high])

imshow(RGB)

imshow(BW)

imshow(X,map)

imshow(filename)

himage = imshow(…)

imshow(…, param1, val1, param2, val2,…)

3. 图像信息提取:whos ’’

Help:

who, whos

List variables in workspace

Graphical Interface

As an alternative to whos, use the Workspace browser. For information on viewing the contents of MAT-files without loading them, see Using the Current Folder Browser.

Syntax

who

whos

who(variable_list)

whos(variable_list)

who(variable_list, qualifiers)

whos(variable_list, qualifiers)

s = who(variable_list, qualifiers)

s = whos(variable_list, qualifiers)

who variable_list qualifiers

whos variable_list qualifiers

4. 获取图像文件压缩颜色等其他信息:imfinfo(‘图像路径’)

Help:

imfinfo

Information about graphics file

Syntax

info = imfinfo(filename,fmt)

info = imfinfo(filename)

info = imfinfo(URL,…)

5. 压缩图像并保存成jpg: imwrite

imwrite(f,’filename.jpg’,’quality’,q) 0<=q<=100

6. 将tif存为bmp:imwrite(‘源图像路径’,‘保存路径’,‘bmp’)

Help

imwrite

Write image to graphics file

Syntax

imwrite(A,filename,fmt)

imwrite(X,map,filename,fmt)

imwrite(…,filename)

imwrite(…,Param1,Val1,Param2,Val2…)

7. 灰度图像转二值图像:im2bw()

Help

im2bw

Convert image to binary image, based on threshold

Syntax

BW = im2bw(I, level)

BW = im2bw(X, map, level)

BW = im2bw(RGB, level)

8. RGB图像创建灰度图像:rgb2gray()

Help

rgb2gray

Convert RGB image or colormap to grayscale

Syntax

I = rgb2gray(RGB)

newmap = rgb2gray(map)

9. 多幅图像在同一个窗口显示:subplot(1,2,1),imshow(A);subplot(1,2,2),imshow(B)

Help:

subplot

Create axes in tiled positions

Syntax

h = subplot(m,n,p) or subplot(mnp)

subplot(m,n,p,’replace’)

subplot(m,n,P)

subplot(h)

subplot(‘Position’,[left bottom width height])

subplot(…, prop1, value1, prop2, value2, …)

h = subplot(…)

四.实验步骤

1. 读取一幅图像,将其存入一个数组中;

2. 显示这幅图像;

3. 提取该图像的基本信息;

4. 获取图像文件的压缩,颜色等等其他的详细信息;

5. 压缩这幅图象,将其保存为一幅压缩了像素的jpg文件;

6. 将最初读入的tif图象另存为一幅bmp图像;

7. 将一幅灰度图像转化为二值图像,并且显示出来,观察图像的特征;

8. 根据RGB图像创建一幅灰度图像;

9. 多幅图像在同一个窗口内显示;

五.实验结果

为了方便代码书写,将matlab的工作路径设置为了所有图片所在的文件夹,也就是F:envimatlab上机实验imdemos,从而写代码时,可以省略路径。

1. 读取一幅图像,将其存入一个数组中;

A= imread(‘cameraman.tif’)

2. 显示这幅图像;

Imshow(A)

3. 提取该图像的基本信息;

Whos A

4. 获取图像文件的压缩,颜色等等其他的详细信息;

imfinfo cameraman.tif

5. 压缩这幅图象,将其保存为一幅压缩了像素的jpg文件;

imwrite(A,’1cameraman.jpg’,’quality’,50)

压缩前: 大小为60多k

压缩后:大小为6k多

6. 将最初读入的tif图象另存为一幅bmp图像;

imwrite(A,’cameraman.bmp’,’bmp’)

7. 将一幅灰度图像转化为二值图像,并且显示出来,观察图像的特征;

B=im2bw(A)

subplot(1,2,1),imshow(A);subplot(1,2,2),imshow(B)

8. 根据RGB图像创建一幅灰度图像;

C=imread(‘greens.jpg’)

D=rgb2gray(C)

subplot(1,2,1),imshow(C);subplot(1,2,2),imshow(D)

9. 多幅图像在同一个窗口内显示;

subplot(2,2,1),imshow(A);subplot(2,2,2),imshow(B);

subplot(2,2,3),imshow(C);subplot(2,2,4),imshow(D)

六、问题与思考:

1. Matlab软件可以支持哪些图像文件格式?

⑴JPEG(Joint Photogyaphic Expeyts Group):一种称为联合图像专家组的图像压缩格式。

⑵BMP(Windows Bitmap):有1位、4位、8位、24位非压缩图像,8位RLE(Run length Encoded)的图像。文件内容包括文件头(一个BITMAP FILEHEADER数据结构)、位图信息数据块(位图信息头BITMAP INFOHEADER和一个颜色表)和图像数据。

⑶PCX(Windows Paintbrush):可处理1位、4位、8位、16位、24位等图像数据。文件内容包括文件头、图像数据和扩展色图数据。

⑷TIFF(Tagged Iamge File Format):处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。

⑸PNG(Portable Network Graphics):包括1位、2位、4位、8位和16位灰度图像,8位和16位索引图像,24位和48位真彩色图像。

⑹GIF(Graphics Interchange Format):任何1位到8位的可交换的图像。

⑺HDF(Hierarchial Data Format):有8位、24位光栅图像数据集。

⑻ICO(Windows Icon resource):有1位、4位、8位非压缩图像。

⑼CUR(Windows Cursor resource):有1位、4位、8位非压缩图像。

⑽XWD(X Windows Dump):包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。

⑾RAS(Sun Raster image):有1位bitmap、8位索引、24位真彩色和带有透明度的32位真彩色。

⑿PBM(Portable Bitmap)。

⒀PGM(Portable Graymap)。

⒁PPM(Portable Pixmap)。

2. 说明函数imread 的用途格式以及各种格式所得到图像的性质。

imread的常见调用格式为:

A = imread(filename,fmt)

其作用是将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A中。如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。Filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。

imread的其他几种重要的调用格式为:

[X,map] = imread(filename.fmt)

[…] = imread(filename)

[…] = imread(URL,…)

[…] = imread(…,idx) (CUR,ICO and TIFF only)

[…] = imread(…,’frames’,idx) (GIF only)

[…] = imread(…,ref) (HDF only)

[…] = imread(…,’BackgroundColor’,BG) (PNG only)

[A,map,alpha] = imread(…) (ICO,CUR and PNG only)

上面一些参数的含义如下:idx是指读取图标(cur、ico、tiff)文件中第idx个图像,默认值为1。’frame’,idx是指读取gif文件中的图像帧,idx值可以是数量、向量或’all’。ref是指整数值。alpha是指透明度。

3. 为什么用I = imread(‘lena.bmp’) 命令得到的图像I 不可以进行算术运算?

MATLAB系统默认的算术运算是针对双精度类型(double)的数据,而上述命令产生的矩阵的数据类型是无符号8位(MATLAB为图像提供的特殊的数据类型),直接进行运算会溢出。

转载于:https://my.oschina.net/wangsifangyuan/blog/860904

你可能感兴趣的文章
Debian+Apache2服务器
查看>>
MySQL库和表的操作
查看>>
shell编程:编译器、解释器 变量
查看>>
yum仓库一些简单介绍
查看>>
HashMap----工作原理
查看>>
nodejs 安装 postgresql module
查看>>
【转】iOS学习之iOS禁止Touch事件
查看>>
Java8新特性之Collectors
查看>>
怎么用CorelDRAW制作表格
查看>>
eclipse智能配置
查看>>
安装Scrapy遇到的问题处理
查看>>
个人作业——软件产品案例分析
查看>>
Java学习:方法重载的使用规则
查看>>
ASP.NET MVC 防止CSRF攻击
查看>>
EF:无法检查模型兼容性,因为数据库不包含模型元数据。
查看>>
0和5
查看>>
C# WinFrom一些技术小结
查看>>
hdu5001 Walk 概率DP
查看>>
模拟select控件&&显示单击的坐标&&用户按下键盘,显示keyCode
查看>>
Mac-OSX下Ruby更新
查看>>