没有合适的资源?快使用搜索试试~ 我知道了~
数字图像处理实验报告
5星 · 超过95%的资源 需积分: 9 16 下载量 87 浏览量
2011-12-21
10:03:42
上传
评论
收藏 3.65MB DOC 举报
温馨提示
试读
32页
图象显示 图象的二维傅立叶变换 图象的增强(直方图均衡化和不同模板的均值平滑) 图象的增强(中值滤波、梯度锐化、拉普拉斯算子) 图像二值化
资源详情
资源评论
资源推荐
实验一 图象显示
一、实验目的:掌握在计算机上显示图象的方法
二、实验要求:
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;a<256;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;a<64;a++){
fread(datam,64,1,fp);
for(b=0;b<64;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);
}
1、显示 A2 和 B2 图像的程序修改:
红色区域内改为:
fp=fopen(argv[1],"rb");
for(a=0;a<64;a++){
fread(datam,64,1,fp);
for(b=0;b<64;b++) {
putpixel2(b+128,a+100,(int)datam[b]);
putpixel2(b+129,a+100,(int)datam[b]);
putpixel2(b+128,a+101,(int)datam[b]);
putpixel2(b+129,a+101,(int)datam[b]);
}
}
A2:
B2:
2、显示 256*256 的灰度图象(灰度变化分别是左边暗-右边亮)的程序修改:
红色区域内改为:
fp=fopen(argv[1],"rb");
for(a=0;a<256;a++){
fread(datam,256,1,fp);
for(b=0;b<256;b++) {
putpixel2((b+256)/2,(a+100)/2,b);
}
}
3、显示 256*256 的灰度图象(灰度变化分别是左下暗-中间亮-右上暗)的程序
修改:
红色区域内改为:
fp=fopen(argv[1],"rb");
for(a=0;a<256;a++){
fread(datam,256,1,fp);
for(b=0;b<256;b++) {
putpixel2((b+256)/2,(a+100)/2,255-abs(a-b));
}
}
4、显示 256*256 的灰度图象(灰度变化分别是左上暗-中间亮-右下暗)的程序
修改:
红色区域内改为:
fp=fopen(argv[1],"rb");
for(a=0;a<256;a++){
fread(datam,256,1,fp);
for(b=0;b<256;b++) {
putpixel2((b+256)/2,(a+100)/2,255-abs(a+b-256));
}
}
四、实验小结:
通过本次实验,我学会了如何用 c 语言显示图像以及用 c 语言进行图像的位
置显示和位置灰度变换的处理方法。
实验二 图象的二维傅立叶变换
一、实验目的:
掌握在计算机上进行二维傅立叶变换的编程方法以及显示变换图象的方法。
二、实验内容:
1、编写二维傅立叶变换的 C 语言程序及相应的显示程序。
2、建立输入图象,在 64*64 的白色图象矩阵的中心建立 16*16 的黑色矩
剩余31页未读,继续阅读
zxz0309
- 粉丝: 2
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3