文档库 最新最全的文档下载
当前位置:文档库 › 数字图像处理实验一(位图文件信息的提取和二值化处理)

数字图像处理实验一(位图文件信息的提取和二值化处理)

数字图像处理实验一(位图文件信息的提取和二值化处理)
数字图像处理实验一(位图文件信息的提取和二值化处理)

数字图像处理实验一

(位图文件信息的提取和二值化处理)

实验平台:MinGW(Mini Gnu for Windows),里面包含gcc for windows的编译器,将其拷贝值某目录,然后设置环境变量(这里我设为c:\MinGW,通过一个批处理命令setc.bat实现)设置完成后,即可通过gcc(g++)命令进行编译。

(附:使用VC++ 6.0 也可)

相关实验文件下载地址:ftp://218.193.154.238 /课件/数字图像处理/

实验步骤:

拷贝MinGW文件夹至C: (路径为C:\MinGW)

编辑setc.bat文件,然后运行此批处理以设置路径。

编辑hdr.h 和hdr.c文件

编辑bmphdr.c文件,然后在当前文件路径下,使用DOS命令:gcc -c hdr.c //编译,生成hdr.o目标文件

gcc -c bmphdr.c //编译,生成bmphdr.o目标文件

gcc -o bmphdr.exe hdr.o bmphdr.o //链接,生成bmphdr.exe执行文件使用bmphdr.exe来提取某一个bmp文件的头信息,例如:

bmphdr test.bmp

编辑ez.c文件(用于图像的二值化处理),然后

gcc -c ez.c //编译,生成ez.o目标文件

gcc -o ez.exe hdr.o ez.o //链接,生成ez.exe执行文件使用ez.exe文件来对某一个bmp文件进行二值化处理。

例如:ez test.bmp result.bmp 108 (对test.bmp文件进行二值化处理,阈值为108,处理的结果为result.bmp文件)

setc.bat内容:

@echo off

set msdir=C:\MinGW

set PATH="%msdir%\bin";"%PATH%"

set INCLUDE=%msdir%\Include;%msdir%\MFC\Include;%INCLUDE%

set LIB=%msdir%\Lib;%LIB%

补充:如果以上批处理命令无效的话,可以:

我的电脑->属性->高级->环境变量编辑变量path 增加C:\ MinGW\bin hdr.h文件内容:

#ifndef __HDR_H__

#define __HDR_H__

struct bmphdr {

char signature[2];

int size;

short reserved[2];

int offset;

int hdr_size;

int width;

int height;

short nr_planes;

short bits_per_pixel;

int compress_type;

int data_size;

int resol_hori;

int resol_vert;

int nr_colors;

int important_color;

char info[1024];

};

struct bmphdr *get_header(char filename[]);

#endif

hdr.c文件内容:

#include

#include

#include "hdr.h"

struct bmphdr *get_header(char filename[])

{

FILE *fp;

struct bmphdr *hdr;

fp = fopen(filename, "rb");

if (!fp) {

printf("File open error or such file does not exist!\n");

return NULL;

}

hdr = (struct bmphdr *)malloc(sizeof(struct bmphdr));

fread(hdr->signature, 2, 1, fp);

if (hdr->signature[0] != 'B' || hdr->signature[1] != 'M') { printf("Not a bmp file!\n");

return NULL;

}

fread(&hdr->size, 4, 1, fp);

fread(hdr->reserved, 4, 1, fp);

fread(&hdr->offset, 4, 1, fp);

fread(&hdr->hdr_size, 4, 1, fp);

fread(&hdr->width, 4, 1, fp);

fread(&hdr->height, 4, 1, fp);

fread(&hdr->nr_planes, 2, 1, fp);

fread(&hdr->bits_per_pixel, 2, 1, fp);

fread(&hdr->compress_type, 4, 1, fp);

fread(&hdr->data_size, 4, 1, fp);

fread(&hdr->resol_hori, 4, 1, fp);

fread(&hdr->resol_vert, 4, 1, fp);

fread(&hdr->nr_colors, 4, 1, fp);

fread(&hdr->important_color, 4, 1, fp);

if (hdr->offset > 54)

fread(&hdr->info, 1024, 1, fp);

fclose(fp);

return hdr;

bmphdr.c文件内容:

#include

struct bmphdr {

char signature[2];

int size;

short reserved[2];

int offset;

int hdr_size;

int width;

int height;

short nr_planes;

short bits_per_pixel;

int compress_type;

int data_size;

int resol_hori;

int resol_vert;

int nr_colors;

int important_color;

} header;

int main(int argc, char *argv[])

{

FILE *fp;

if (argc != 2) {

printf("Usage: %s \n", argv[0]);

exit(1);

}

fp = fopen(argv[1], "r");

if (!fp) {

printf("File open error or such file does not exist!\n");

exit(1);

}

fread(header.signature, 2, 1, fp);

if (header.signature[0] != 'B' || header.signature[1] != 'M') { printf("Not a bmp file!\n");

exit(1);

}

fread(&header.size, 4, 1, fp);

fread(header.reserved, 4, 1, fp);

fread(&header.offset, 4, 1, fp);

fread(&header.hdr_size, 4, 1, fp);

fread(&header.width, 4, 1, fp);

fread(&header.height, 4, 1, fp);

fread(&header.nr_planes, 2, 1, fp);

fread(&header.bits_per_pixel, 2, 1, fp);

fread(&https://www.wendangku.net/doc/611069600.html,press_type, 4, 1, fp);

fread(&header.data_size, 4, 1, fp);

fread(&header.resol_hori, 4, 1, fp);

fread(&header.resol_vert, 4, 1, fp);

fread(&header.nr_colors, 4, 1, fp);

fread(&header.important_color, 4, 1, fp);

fclose(fp);

printf("signature %c%c\n", header.signature[0], header.signature[1]);

printf("size %d\n", header.size);

printf("offset %d\n", header.offset);

printf("hdr_size %d\n", header.hdr_size);

printf("width %d\n", header.width);

printf("height %d\n", header.height);

printf("nr_planes %d\n", header.nr_planes);

printf("bits_per_pixel %d\n", header.bits_per_pixel);

printf("compress_type %d\n", https://www.wendangku.net/doc/611069600.html,press_type);

printf("data_size %d\n", header.data_size);

printf("resol_hori %d\n", header.resol_hori);

printf("resol_vert %d\n", header.resol_vert);

printf("nr_colors %d\n", header.nr_colors);

printf("important_color %d\n", header.important_color);

printf("\n");

return 0;

}

二值化程序ez.c 文件内容:

#include

#include

#include

#include "hdr.h"

struct bmphdr *hdr;

unsigned char *bitmap, *to;

char buf[2048];

int main(int argc, char *argv[])

{

int i, j, k, nr_pixels;

FILE *fp, *fpnew;

unsigned g;

if (argc != 4) {

printf("Usage: %s \n", argv[0]);

exit(1);

}

hdr = get_header(argv[1]);

if (!hdr) exit(1);

fp = fopen(argv[1], "rb");

if (!fp) {

printf("File open error!\n");

exit(1);

}

fseek(fp, hdr->offset, SEEK_SET);

nr_pixels = hdr->width * hdr->height;

bitmap = malloc(nr_pixels);

fread(bitmap, nr_pixels, 1, fp);

fclose(fp);

k = atoi(argv[3]);

to = malloc(nr_pixels);

memset(to, 0, nr_pixels);

for (i = 0; i < nr_pixels; i++)

to[i] = bitmap[i] > (unsigned char)k ? 255 : 0;

fpnew = fopen(argv[2], "wb+");

if (!fpnew) {

printf("File create error!\n");

exit(1);

}

fwrite(hdr->signature, 2, 1, fpnew);

fwrite(&hdr->size, 4, 1, fpnew);

fwrite(hdr->reserved, 4, 1, fpnew);

fwrite(&hdr->offset, 4, 1, fpnew);

fwrite(&hdr->hdr_size, 4, 1, fpnew);

fwrite(&hdr->width, 4, 1, fpnew);

fwrite(&hdr->height, 4, 1, fpnew);

fwrite(&hdr->nr_planes, 2, 1, fpnew);

fwrite(&hdr->bits_per_pixel, 2, 1, fpnew);

fwrite(&hdr->compress_type, 4, 1, fpnew);

fwrite(&hdr->data_size, 4, 1, fpnew);

fwrite(&hdr->resol_hori, 4, 1, fpnew);

fwrite(&hdr->resol_vert, 4, 1, fpnew);

fwrite(&hdr->nr_colors, 4, 1, fpnew);

fwrite(&hdr->important_color, 4, 1, fpnew);

if (hdr->offset > 54)

fwrite(hdr->info, hdr->offset - 54, 1, fpnew);

fwrite(to, nr_pixels, 1, fpnew);

fclose(fpnew);

free(hdr);

free(bitmap);

return 0;

}

数字图像处理实验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

数字图像处理实验 实验二

实验二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)掌握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) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

数字图像处理实验2

Exercise 3 https://www.wendangku.net/doc/611069600.html,e picture “Fig0401.tif” to do the following questions: ①Read the picture, and write down the Fourier transform program of it. >> f=imread('Fig0401.tif'); >> g=fft2(f); Warning: FFTN on values of class UINT8 is obsolete. Use FFTN(DOUBLE(X)) or FFTN(SINGLE(X)) instead. > In uint8.fftn at 10 In fft2 at 19 >> s=abs(g); >> imshow(s,[])

②Use the function fftshift to center the spectrum. >> fc=fftshift(g); >> imshow(abs(fc),[]) ③Use logarithmic transformation to enhance the centered spectrum. >> s2=log(1+abs(fc)); >> imshow(s2,[])

④Visualize the dealing results of step②and step③. 结果如上 2.Generate a filter function H ①Use function fspecial to generate a ‘laplacian’ spatial domain filter h >> h=fspecial('laplacian',0.5) h= 0.3333 0.3333 0.3333 0.3333 -2.6667 0.3333 0.3333 0.3333 0.3333 ②Use function freqz2 to convert the spatial domain filter h to frequency domain filter H. >>h= freqz2(h);

南昌大学-数字图像处理实验报告1-8(全)

NANCHANG UNIVERSITY 数字图象处理实验报告 专业:通信工程 班级:121班 学号:6100212024 学生姓名:徐万然 2015年4月20日

目录 实验1:图像信号的数字化 实验2:图像灰度级修正 实验3:图像的平滑滤波 实验4:图像的锐化处理 实验5:图像的伪彩色处理 实验6:图像的几何变化 实验7:图像的复原处理 实验8:图像的正交变换

实验一:图像信号的数字化 一、实验目的 通过本实验了解图像的数字化参数取样频率(象素个数)、量化层数与图像质量的关系。 二、实验内容 编写并调试图像数字化程序,要求参数k,n 可调。其中k为亚抽样比例;n 为量化比特数;选择任意图像进行处理,在显示器上观察各种数字化参数组合下的图像效果。 三、实验程序 f=imread('Water lilies.jpg'); %读入一张图片 f1=rgb2gray(f); %将rgb值转换为灰度图 subplot(3,3,1),imshow(f),title('灰度图'); %显示这幅图像 f2=im2bw(f1); %将图像转换为二值图 subplot(3,3,2),imshow(f2),title('二值图'); %显示这幅图像 f3=~f2; %对图像进行取反操作 subplot(3,3,3),imshow(f3),title('取反图'); %显示这幅图像 f4=imnoise(f,'gaussian');% subplot(3,3,4),imshow(f4),title('加高斯噪声图'); %对象进行预操作,加入高斯噪声 h=ones(5,5)/25; %设计一个5*5的均值滤波器 f5=imfilter(f4,h); %对图像进行均值滤波 subplot(3,3,5),imshow(f5),title('平滑滤波图'); %显示这幅图像 f6=imadjust(f,[0,1],[0,1]); %对图像灰度值进行归一化处理 subplot(3,3,6),imshow(f6),title('灰度级修正图1'); %显示这幅图像 f7=imadjust(f,[0,0.8],[0,1]); %降低输入的灰度值 subplot(3,3,7),imshow(f7),title('灰度级修正图2'); %显示这幅图像

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 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 的大小;

数字图像处理实验

研究性实验五 一、实验说明: 一个用瓶子装各种工业化学品的装瓶公司听说你成功解决了成像问题,并雇佣你设计一种检测瓶子未装满的方法。当瓶子在传送带上运动,并通过自动装填机和封盖机进行包装时有如下图所示的情景。当液体平面低于瓶颈底部和瓶子肩部的中间点时,认为瓶子未装满。瓶子的横断面上的倾斜部分及侧面定义为瓶子的肩部。瓶子在不断移动,但公司有一个图像系统,装备了有效捕捉静止图像的前端闪光照明设备。所以你可以得到非常清晰的图像。基于以上你得到的资料,提出一个检测未完全装满的瓶子的解决方案。清楚地表述你做的所有设想和很可能对你提出的解决方案产生影响的假设。 二、实验思路分析: 三、实验步骤 步骤一:读入原始图像

步骤二:将图像进行二值化处理 BW = im2bw(I,0.7); 由于原始图像中白色比较明显,瓶身的颜色和背景比较相近,所以直接进行二值化处理,将未装满液体的信息提取出来。 步骤三:将图像聚类后进行连通域的膨胀。 将图像二值化后发现图中存在噪声,选择将图像进行模糊膨胀后再二值化处理,从而去掉小连通域的干扰。 步骤四:重新二值化膨胀后的图像

步骤五:标记连通域,并统计每个连通域的面积。 经统计得到从左到右的连通域面积分别为3495 4398 11212 4398 2573,限定范围,可知11212对应的连通域所对应的瓶子是不符合要求的。 四、实验代码 功能:找出图像中灌装不合格的瓶子。 说明:(1)输入的图像必须是灰度图,否则需要将之格式转换。 (2)图像处理的步骤是:①对灰度图像glass.jpg进行二值化,②进行形态学处理, ③计算白色连通区域的面积和质心等,④通过判断质心的坐标和未装灌的面积得出是否合格。图像处理后五个白色区域面积为: [2374, 2739, 8381, 2739, 1660;] 五个质心的坐标数据: [20.6251,48.0434,138.6046,46.6575,256.2667,84.9748,376.6046,46.6575,484.6181,47.9084;] 通过没有装灌部分的面积大于2900来判定装灌不合格,两个合格的值为2739,其余未照全的部分判断还可以 根据其质心判断,合格的瓶子为46.6575,坐标过大也不合格,这里取50。 源代码: clear all; close all; T = 200; % 全局阈值200时效果要好一些,手动选出的值 %step1 读取和显示原始图像,显示原始图像的直方图 picOP = imread('glass.jpg'); % 读入图像 figure,imshow(picOP),title('原始灰度图像'); % 显示图像 figure, imhist(picOP), title('原始灰度图像直方图'); % 显示原始图像的直方图 % step2 转化为二值图像 picB = picOP; % 复制灰度图像到picB picBW = im2bw(picB,T/255); % 采用全局阈值进行灰度图像转变为二值图像 figure,imshow(picBW),title('全局阈值下二值图像'); % 显示二值图像 % step3 进行形态学操作,转化为有利于处理的图像 picMORPHOLOGY = picBW ; % 复制准备形态学处理 se = strel('square',10); % 结构化元素 fo = imopen(picMORPHOLOGY,se); % 开操作 figure,imshow(fo),title('开运算之后图像'); % 输出开运算之后图像 % step4 计算出各个白色连通区域(未装灌区域)面积和质心坐标

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

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彩色空间

数字图像处理实验

(1)矩阵图像的傅里叶变换 f=zeros(30,30); f(5:24,13:17)=1; imshow(f,'notruesize') F=fft2(f); F2=log(abs(F)); figure;imshow(F2,[-1 5],'notruesize');colormap(jet);colorbar;

-0.5 00.5 11.522.533.544.5 (2)图像的傅里叶变换 I=imread('concordorthophoto.png'); imshow(I); B=ffshift(fft2(I)); figure; imshow(log(abs(B)),[]),colorbar;

图像离散余弦变换 RGB=imread('hestain.png'); I=rgb2gray(RGB); imshow(RGB); J=dct2(I); figure,imshow(log(abs(J)),[]),colorbar; J(abs(J)<10)=0; K=idct2(J)/255; figure,imshow(K)

二(1) 直方图均衡化增强图像对比度程序I=imread('trees.tif'); J=imnoise(I,'salt & pepper',0.02); imshow(I);figure,imshow(J) K1=filter2(fspecial('average',3),J)/255; K2=filter2(fspecial('average',5),J)/255; K3=filter2(fspecial('average',7),J)/255; figure,imshow(K1) figure,imshow(K2) figure,imshow(K3)

数字图像处理实验2冈萨雷斯.

实验二灰度直方图及直方图均衡化 一、 实验目的: 1、直方图显示 2、计算并绘制图像直方图 3、直方图均衡化二、实验内容 学习使用函数 imhist(, histeq(, bar(, stem(, plot(, imadjust(,及 title, axis, set 等描述图像工具。 1、直方图显示 显示图 Fig0354(a(einstein_orig.tif,标注图的题目为:EINSTEIN ,作出其直方图,调整参数如下图所示: EINSTEIN

4 2、分别用 bar 和 stem 函数显示直方图 由 h=imhist( 获得直方图;分别用 bar 和 stem 显示直方图 h ,并通过参数调整,改变直方图的显示方式。用 axis 设置轴的最大、最小值(例如:axis([0 255 0 15000];),用 set 设置显示坐标的间隔(例如:set(gca,’xtick ’, 0:50:255)。作出如下的直方图: 00 50

100 150 200 250 3、用 plot 函数显示直方图要求同 2. 12000 1000080006000400020000 0 50 100 150 200 250 300 4、用 imadjust( 函数调整图像对比度,并用 imhist( 查看调整前后直方图的变化。 3 . 2 . 1 . 0 . 4

5、用 histeq( 进行直方图均衡化,并用 imhist( 查看均衡化前后直方图的变化。

4 三、实验要求 将本实验的 10 个图用 MATLAB 显示到屏幕上。程序: i=imread('Fig0354(a(einstein_orig.tif'; imshow(i; title('EINSTEIN'; figure; imhist(i; title('直方图';

数字图像处理实验八

数字图像处理 实验 实验八:彩色图像处理 学院:信息工程学院 姓名: 学号: 专业及班级: 指导教师:

一、实验目的 使用MatLab 软件对图像进行彩色处理。使学生通过实验熟悉使用MatLab软件进行图像彩色处理的有关方法,并体会到图像彩色处理技术以及对图像处理的效果。二、实验内容 要求学生能够完成彩色图像的分析,能正确讨论彩色图像的亮度、色调等性质;会对彩色图像进行直方图均衡,并能正确解释均衡处理后的结果;能够对单色图像进行伪彩色处理、利用多波长图像进行假彩色合成、进行单色图像的彩色变换。 利用MATLAB软件实现彩色图像处理的程序: rgb_image=imread('flower1.tif'); %读取图像flower1.tif fR=rgb_image(:,:,1); %获取图像的红色分量 fG=rgb_image(:,:,2); %获取图像的绿色分量 fB=rgb_image(:,:,3); %获取图像的蓝色分量 figure(1),imshow(fR) %分别显示图像 figure(2),imshow(fG) figure(3),imshow(fB) %实现rgb图像转化为NTSC彩色空间的图像 yiq_image=rgb2ntsc(rgb_image); fY=yiq_image(:,:,1); %图像flower1.tif的亮度 fI=yiq_image(:,:,2); %图像flower1.tif的色调 fQ=yiq_image(:,:,3); %图像flower1.tif的饱和度 figure(4),imshow(fY) figure(5),imshow(fI) figure(6),imshow(fQ) fR=histeq(fR,256); %对彩色图像的分量进行直方图均衡化 fG=histeq(fG,256); fB=histeq(fB,256); RGB_image=cat(3,fR,fG,fB); %将直方图均衡化后的彩色图像合并 figure,imshow(RGB_image) %观察处理后的彩色图色度,亮度参照前面 f1=imread('v1_red.jpg'); f2=imread('v1_green.jpg'); f3=imread('v1_blue.jpg'); f4=imread('infer_near.jpg'); ture_color=cat(3,f1,f2,f3); figure,imshow(ture_color) %显示由红、绿、蓝三幅图合成的彩色图 false_color=cat(3,f4,f2,f3); %用近红外图像代替R分量 figure,imshow(false_color) %显示由近红外、绿、蓝三幅图合成的假彩色图 f=imread('head.jpg'); cut_1=imadjust(f,[0.0925 0.5],[0.0925 0.5]);%提取灰度在16-128之间的像素 cut_2=imadjust(f,[0.5 1],[0.5 1]); %提取灰度在128-256之间的像素

数字图像处理实验一

大学实验报告 学院:计算机科学与技术专业:信息安全班级:131 姓名学号实验组实验时间2016/4/22 指导教师成绩 实验项目名称图像基本操作 实验目的 利用MATLAB软件,熟悉图像的数据矩阵操作、图像的类型转换及图像的存储等基本操作。 1.熟悉图像矩阵的基本操作 2.掌握图像数据类型转换及图像类型转换 3.掌握图像文件的读写 4.掌握图像及灰度图像直方图的显示 5.掌握图像缩放和旋转 实验要求 利用MATLAB软件,熟悉图像的数据矩阵操作、图像的类型转换及图像的存储等基本操作。 1.熟悉图像矩阵的基本操作 2.掌握图像数据类型转换及图像类型转换 3.掌握图像文件的读写 4.掌握图像及灰度图像直方图的显示 5.掌握图像缩放和旋转 实验原理1.关于图像矩阵 MATLAB中图像数据以矩阵方式的存储。所以有必要学会关于矩阵的操作,由于篇幅有限,这里只作简要的介绍。 生成矩阵的函数有: eye 生成单位矩阵 ones全1阵 zeros 全零阵 rand 均匀随机阵 randn 正态随机阵 2.图像数据类型及图像类型 2.1 图像数据类型转换 MATLAB中图像数据矩阵的存储方式为双精度(double)类型即64位浮点数。而存储图像时MATLAB有时采用无符号整型(uint8)即图像矩阵中的每个数据占用一个字节。由于大多数运算和函数(比如最基本的矩阵加减运算)都不支持uint8类型,所以运算时通常要将图像转换成 double型。 函数double将数据转换为双精度浮点类型,调用格式为: X64=double(x8) /256 2.2 图像类型及转换

在MATLAB中,一幅图像可能包含一个数据矩阵,也可能有一个颜色映像表矩阵。MATLAB图像处理工具箱支持四种图像类型,其区别在于数据矩阵元素的不同含意。它们是: ● 真彩色图像 ● 索引图像 ● 灰度图像 ● 二值图像 (1)真彩色图像 真彩色图像又称RGB图像,对于一个尺寸为M×N的彩色图像来说,在MATLAB中则存储为一个M×N×3的多维数组,像素的颜色由保存在像素位置上的R、G、B的强度值的组合来确定。如果需要知道图像A中(x,y)处的像素值,则可以使用这样的代码A(x,y,1:3)。 (2)索引图像 MATLAB中的索引图像包含两个结构,一个是调色板,一个是图像数据矩阵。调色板是一个m×3的色彩映射矩阵,矩阵的每一行都代表一种色彩,与真彩色图像相同,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。调色板通常和索引图像存在一起,当读入图像时,MATLAB同时加载调色板和图像。 (3)灰度图像 灰度图像就是只有强度信息,而没有颜色信息的图像。存储灰度图像只需要一个数据矩阵,矩阵的每个元素表示对应位置像素的灰度值,灰度图像的数据类型可以是doubIe类型,这时值域为[0,1],也可以uint8类刑,值域是[0,255]。 (4)二值图像 二值图像就是只有黑白两种值的图像,我们可以把它看作是特殊的灰度图像。二值图像只需一个数据矩阵来存储,每个像素只取0或1。 MATLAB提供了若干函数,用于图像类型的转换,这些函数如下所示: ●rgb2gray 将RGB图像转换成灰度图像 ●Gray2ind 将灰度图像转换成索引图像 ●Im2bw 设定阈值将图像转换为二值图像 ●Im2double 将图像数据阵列转换为double型 ●Im2unit8 将图像数据阵列转换为unit8型 ●Im2unit16 将图像数据阵列转换为unit16型 ●Ind2gray 将索引图像转换为灰度图像 ●Ind2rgb 将索引图像转换成真彩色图像 2.3 图像读写及显示 MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。 (1)图像文件的读取 利用imread函数可以完成图像文件的读取操作,常见调用格式为: A = imread(FILENAME,FMT) 其作用是将文件名用字符串FILENAME表示的、扩展名用字符串FMT(表示图像文件格式)表示的图像文件中的数据读到矩阵A中。如果FILENAME所指的为灰度图像,则A为M×N的二维矩阵;如果FILENAME所指的为RGB图像,则A为M×N×3的三维矩阵。 (2)图像文件的写入(保存) 利用imwrite函数完成图像的写入操作,也完全支持上述各种图像文件的格式,其常用的调用格式为: imwrite(A,FILENAME,FMT)

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作....................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验二:图像的灰度变换和直方图变换............................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验三:图像的平滑处理....................................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验四:图像的锐化处理......................................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。

数字图像处理实验一

数字图像处理—实验一 一.实验内容: 图像灰度变换 二.实验目的: 学会用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];

数字图像处理实验报告

数字图像处理实验 报告 学生姓名:学号: 专业年级: 09级电子信息工程二班

实验一常用MATLAB图像处理命令 一、实验内容 1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 实验结果如右图: 代码如下: Subplot (1,3,1) i=imread('E:\数字图像处理\2.jpg') imshow(i) title('RGB') Subplot (1,3,2) j=rgb2gray(i) imshow(j) title('灰度') Subplot (1,3,3) k=im2bw(j,0.5) imshow(k) title('二值') 2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (3,2,1) i=imread('E:\数字图像处理 \16.jpg') x=imresize(i,[250,320]) imshow(x) title('原图x') Subplot (3,2,2) j=imread(''E:\数字图像处理 \17.jpg') y=imresize(j,[250,320]) imshow(y) title('原图y') Subplot (3,2,3) z=imadd(x,y) imshow(z)

title('相加结果');Subplot (3,2,4);z=imsubtract(x,y);imshow(z);title('相减结果') Subplot (3,2,5);z=immultiply(x,y);imshow(z);title('相乘结果') Subplot (3,2,6);z=imdivide(x,y);imshow(z);title('相除结果') 3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (2,2,1) i=imread('E:\数字图像处理 \23.jpg') imshow(i) title('原图') Subplot (2,2,2) J = imadjust(i,[],[],3); imshow(J) title('变暗') Subplot (2,2,3) J = imadjust(i,[],[],0.4) imshow(J) title('变亮') Subplot (2,2,4) J=255-i Imshow(J) title('变负') 二、实验总结 分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。 解答:图像减运算与图像加运算的原理和用法类似,同样要求两幅图像X、Y的大小类型相同,但是图像减运算imsubtract()有可能导致结果中出现负数,此时系统将负数统一置为零,即为黑色。 乘运算实际上是对两幅原始图像X、Y对应的像素点进行点乘(X.*Y),将结果输出到矩阵Z中,若乘以一个常数,将改变图像的亮度:若常数值大于1,则乘运算后的图像将会变亮;叵常数值小于是,则图像将会会暗。可用来改变图像的灰度级,实现灰度级变换,也可以用来遮住图像的某些部分,其典型应用是用于获得掩膜图像。 除运算操作与乘运算操作互为逆运算,就是对两幅图像的对应像素点进行点(X./Y), imdivide()同样可以通过除以一个常数来改变原始图像的亮度,可用来改变图像的灰度级,其典型运用是比值图像处理。 加法运算的一个重要应用是对同一场景的多幅图像求平均值 减法运算常用于检测变化及运动的物体,图像相减运算又称为图像差分运算,差分运算还可以用于消除图像背景,用于混合图像的分离。

相关文档
相关文档 最新文档