工作报告之图像处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像处理实验报告
【篇一:数字图像处理实验报告】
数字图像处理
实验报告
班级:通信103
学号:201027201
姓名:计富威
指导教师:孙洁
实验一 matlab数字图像处理初步
一、实验目的与要求
1.熟悉及掌握在matlab中能够处理哪些格式图像。
2.熟练掌握在matlab中如何读取图像。
3.掌握如何利用matlab来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在matlab中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验内容及步骤
1.利用imread( )函数读取一幅图像,假设其名为”第一个.tif”,存入一个数组中;
i=imread(第一个.tif);
2.利用whos命令提取该读入图像”第一个.tif”的基本信息; whos i
3.利用imshow()函数来显示这幅图像;
imshow(i);
第一个.tif
4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;
imfinfo(第一个.tif);
5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
imwrite(i,第一个.jpg,quality,50)
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp
图像,设为flower.bmp。
imwrite(i,第一个.bmp);
7.用imread()读入图像:lenna256.jpg 和camemaman.jpg;
b=imread(lena256.bmp);
c=imread(cameraman.tif);
8.用imfinfo()获取图像lenna256.jpg和camemaman.jpg 的大小;imfinfo(lena256.bmp);
imfinfo(cameraman.tif);
9.用figure,imshow()分别将lenna256.jpg和camemaman.jpg
显示
出来,观察两幅图像的质量。
figure
imshow(b);
figure
imshow(c);
(lena256.jpg图像截图)
(cameraman.jpg图像截图)
10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow
显示出来观察图像的特征。
d=im2bw(b);
figure
imshow(b);
figure
imshow(d);
【篇二:数字图像处理实验报告】
数字图像处理
实验报告
实验一图像的几何变换(一)p200 一图像平移
(一) 实验目的
对图像进行平移
(二) 实验步骤
i=imread(beauty.jpg);
subplot(2,1,1);
imshow(i);
title(原图);
%a为垂直移动,b为水平平移
a=30;b=50;
j=move(i,a,b);
subplot(2,1,2);
imshow(j);
title(右下平移);
(三) 实验结果
(四)结果分析
由图可知,图像右下方平移。
可得出如下平移规则: a0,b0下移右移——右下平移
a0,b0下移左移——左下平移
a0,b0上移右移——右上平移
a0,b0上移左移——左上平移
二图像平移
(一)实验目的
matlab中实现平移的函数实验步骤
(二)实验步骤
a=imread(beauty.jpg);
se=translate(strel(1),[80,50]);
b=imdilate(a,se);
subplot(1,2,1);
subimage(a);
title(原图像);
subplot(1,2,2);
subimage(b);
title(图像平移);
(三)实验结果
(四)结果分析
a=800,b=500,图像右下方平移
三图像的镜像
(一)实验目的
实现对图像的水平镜像,垂直镜像,水平垂直镜像的变换。
(二)实验步骤
1.1 function [j]=mirror(i,n)
[m,n]=size(i);
j=i;
if(n==1)
for i=1:m
for j=1:n
j(i,j)=i(m-i+1,j);
end
end
elseif(n==2)
for i=1:m
for j=1:n
j(i,j)=i(i,n-j+1);
end
end
elseif(n==3)
for i=1:m
for j=1:n
j(i,j)=i(m-i+1,n-j+1);
end
end
else
error(n is wrong);
end
i=imread(beauty.jpg);
subplot(2,2,1);
imshow(i);
title(原图);
j1=mirror(i,1);
j2=mirror(i,2);
j3=mirror(i,3);
subplot(2,2,2);
imshow(j1);
title(垂直镜像);
subplot(2,2,3);
imshow(j2);
title(水平镜像);
subplot(2,2,4);
imshow(j3);
title(水平垂直镜像);
1.2镜像变换的matlab实现
a=imread(baby.bmp)
[height,width,dim]=size(a);
tform=maketform(affine,[-1 0 0;0 1 0;width 0 1]); b=imtransform(a,tform,nearest);
tform2=maketform(affine,[1 0 0;0 -1 0;0 height 1]);
c=imtransform(a,tform2,nearest);
tform3=maketform(affine,[-1 0 0;0 -1 0;width height 1]);
d=imtransform(a,tform3,nearest);
subplot(2,2,1);
imshow(a);title(原图);
subplot(2,2,2);
imshow(b);title(水平镜像);
subplot(2,2,3);
imshow(c);title(垂直镜像);
subplot(2,2,4);
imshow(d);title(水平垂直镜像);
(三)实验结果
(四)结果分析
由图看出
【篇三:数字图像处理实验报告】
实验一图象显示
一、实验目的:掌握在计算机上显示图象的方法
二、实验要求:
1、熟悉参考程序,熟悉c语言。
2、输入图象显示源程序,建立c语言程序调试环境。
3、在计算机屏幕上显示制定的图像(提供两个图像文件a2和b2),并计
算显示其灰度直方图。
4、修改程序,在屏幕上显示256*256的对度图像(灰度变化分别
是左边暗
-右边亮、左下暗-中间亮-右上暗、左上暗-中间亮-右下暗)。
三、实验程序
#include conio.h
#include stdio.h
#include stdlib.h
#include process.h
#include dos.h
#include dir.h
#include io.h
#include string.h
#include fcntl.h
#include alloc.h
#include math.h
#include graphics.h
union regs iregs, oregs, sregs;
double data1[512], data2[512], max1, bu1[3], bu2[3];
unsigned char image1[128][128], image2[128][128];
int max;
main(int argc, char *argv[])/----参数argc代表了输入参数的个数,char *argv[]
表示传入的参数的字符串,是一个字符串数组。
------/
{
file *fp, *fp1;
int a,b,c,x,y,z;
int n, isi, driver, mode1;
unsigned char d[128][128], datam[256];
driver=detect;
mode1=2;
initgraph(driver,mode1,) ;/---initgraph()函数直接进行的图形初始
化程序------/
iregs.x.ax=0x0100;
iregs.x.cx=0x0000;
int86(0x10,iregs,oregs);
closegraph();
driver=detect;
mode1=2;
initgraph(driver,mode1,);
iregs.x.ax=0x005f;
int86(0x10,iregs,oregs);
for(a=0;a256;a++){
iregs.x.ax=0x1010;
iregs.x.bx=a;
iregs.h.dh=a/4;
iregs.h.ch=a/4;
iregs.h.cl=a/4;
int86(0x10,iregs,oregs);
}
fp=fopen(f:\\exp\\tc\\a2,rb);
for(a=0;a64;a++){
fread(datam,64,1,fp);
for(b=0;b64;b++) {
putpixel2(b*2+256,a*2+100,(int)datam[b]);
putpixel2(b*2+257,a*2+100,(int)datam[b]);
putpixel2(b*2+256,a*2+101,(int)datam[b]);
putpixel2(b*2+257,a*2+101,(int)datam[b]);
}
}
fclose(fp);
getch();
closegraph();
}
getpixel2( int a, int b )/--显示像素---/
{
iregs.h.ah=0xd;
iregs.x.dx=b;
iregs.x.cx=a;
iregs.x.bx=0;
int86(0x10,iregs,oregs);
return(oregs.h.al);
}
putpixel2( int a, int b,int num)
{
iregs.h.ah=0xc;
iregs.h.al=num;
iregs.x.dx=b;
iregs.x.cx=a;
iregs.x.bx=0;
int86(0x10,iregs,oregs);
}
Ⅰ、显示256*256的灰度图象(灰度变化分别是左边暗-右边亮)的程序修改:
红色区域内改为
fp=fopen(argv[1],rb);
for(a=0;a64;a++){
fread(datam,64,1,fp);
for(b=0;b64;b++) {
putpixel2(b*2+256,a*2+100, b);
putpixel2(b*2+257,a*2+100,b);
putpixel2(b*2+256,a*2+101, b);
putpixel2(b*2+257,a*2+101,b);
Ⅱ、显示256*256的灰度图象(灰度变化分别是左下暗-中间亮-右上暗)的程序
修改:
红色区域内改为
fp=fopen(argv[1],rb);
for(a=0;a256;a++){
fread(datam,256,1,fp);
for(b=0;b256;b++) {
putpixel2(b*2+256,a*2+100,256-abs(a+b-256));
putpixel2(b*2+257,a*2+100, 256-abs(a+b-256));
putpixel2(b*2+256,a*2+101, 256-abs(a+b-256));
putpixel2(b*2+257,a*2+101, 256-abs(a+b-256));
Ⅲ、显示256*256的灰度图象(灰度变化分别是左上暗-中间亮-右下暗)的程序
修改:
红色区域内改为
fp=fopen(argv[1],rb);
for(a=0;a256;a++){
fread(datam,256,1,fp);
for(b=0;b256;b++) {
putpixel2(b*2+256,a*2+100, abs(a+b-256));
putpixel2(b*2+257,a*2+100,abs(a+b-256));
putpixel2(b*2+256,a*2+101, abs(a+b-256));
putpixel2(b*2+257,a*2+101, abs(a+b-256));
四、实验小结:
通过本次实验学会了如何用c语言显示图像以及用c语言进行图像的位置显示和位置灰度变换的处理的方法。
实验二图象的二维傅立叶变换
一、实验目的:掌握在计算机上进行二维傅立叶变换的编程方法以及显示变换图
象的方法
二、实验要求:
1、编写二维傅立叶变换的c语言程序及相应的显示程序。
2、建立输入图象,在64*64的白色图象矩阵的中心建立16*16的黑色矩形
图像点阵,形成图象文件(共4096字节)。
3、对输入图象进行变换,将原始图象及变换图象都显示于屏幕上。
4、调整输入图象中白色矩形的尺寸,再进行变换,比较变换结果。
5、建立输入图象,在64*64的白色图象矩阵的中心建立半径为6个像素黑
色的圆,形成图象文件。
对输入图象进行变换,将原始图象及变换图象
都显示于屏幕上。
调整圆半径的尺寸,比较变换结果。
三、实验程序:
正方形的傅里叶变换:
for(a=0;a128;a++){
for(b=0;b128;b++) {
if(a=40a88b=40b88) data1[b]=100.0;
else data1[b]=0.0;
data2[b]=0.0;。