数字图像处理实验_1
数字图像处理实验——基本操作
- 1 基本图像操作
- 1.1 试验目的
- 1.2 试验内容
- 1 显示图像
- 2 基本图像处理
- 3 体会溢出
- 4 索引图像
- 5 【思考题】
- 6 体会对数函数变换
- 7 【思考题】
- 1.3 实验结果
- 1.4 问题与建议
- 2 应用系统设计
- 2.1 试验内容
- 2.2 实验结果
- 2.3 问题与建议
- 3 体会图像的傅立叶变换
- 3.1 试验目的
- 3.2 试验内容
- 3.3 实验结果
- 1 正弦曲线
- 2 矩形亮斑
- 3 照片傅里叶变换与反变换
- 3.4 问题与建议
- 4 体会2D傅立叶变换的性质
- 4.1 试验目的
- 4.2 试验内容
- 1 旋转特性
- 2 线性性
- 3 平移特性
- 4 卷积与卷积定理
- 4.3 实验结果
- 1 旋转特性
- 2 线性性
- 3 平移特性
- 4 卷积定理
- 4.4 问题与建议
- 6 实践题
- 6.1 试验内容
- 6.2 实验结果
- 1 同态滤波
- 2 斑点图像处理
- 6.3 问题与建议
这是一份作业实录,每个实验写成了一个.m文件,序号不一致的缺了几个的就是放弃没做的。。。在线卑微.jpg
1 基本图像操作
1.1 试验目的
体会基本图像操作,如显示,简单运算等。体会RGB图像与索引图像的不同。
1.2 试验内容
1 显示图像
显示lena.bmp图像,trees.tif图像【描述你看到的内容,注意是灰度图像还是彩色图像】。在当前试验目录“E:\DIP\Project01\”下有若干图像,试显示它们。
2 基本图像处理
读入“len.tif”图像,使用常值255减去图像的所有像素,显示结果,并将结果存储为antilena.tif【图像文件】【脚本文件】。
3 体会溢出
对1.2.2进行其它操作使其超出0到255范围,如何调整显示使你能观察到溢出现象【脚本文件】【图像文件】?
4 索引图像
读入orchid24bits.bmp,orchid8bits.bmp,orchid6bits.bmp,orchid4bits.bmp看数据矩阵的维数以及颜色表有何不同?使用不同的方法显示它们,你能给出一种显示方法显示的结果是错误的吗?将真彩色图像redmountain6bits.bmp转换成有64个颜色的索引图像,并用其颜色表显示orchid6bits.bmp【脚本文件】。
5 【思考题】
使用uint8转换,为什么看不到溢出效果?
6 体会对数函数变换
对wom01.gif进行对数变换【图像文件】【脚本文件】。
7 【思考题】
对图像处理的中间结果,与存储图像进行对数变换,效果有什么不同?试编制一个处理过程的例子演示两种结果,并说明原因。
1.3 实验结果
1 显示图像
lena.bmp是灰度图像,trees.tif是彩色图像。
2 基本图像处理
% pro1_1.2 基本图像处理
lena = imread('lena.tif');
antilena = 255-lena;
subplot(2,2,3)
imshow(antilena);
xlabel('c).antilena.tif');
imwrite(antilena,'antilena.tif');
3 体会溢出
% pro1_1.3 体会溢出
ovflena = 150+lena;
subplot(2,2,4)
imshow(ovflena);
xlabel('d).溢出lena.tif');
4 索引图像
矩阵维数:orchid24bits的矩阵维数为3,orchid8bits、orchid6bits、orchid4bits的矩阵维数为2。
颜色表:orchid24bits 的颜色表是空的,orchid8bits、orchid6bits、orchid4bits的颜色表都为256x3的矩阵。
错误的显示:orchid24bits使用了其他的colormap也不会发生显示错误,但其他三种只要不使用原本的colormap就会出现颜色显示的错误。
% pro1_1.4 索引图象
[orchid24bits,map1] = imread('orchid24bits.bmp');
[orchid8bits,map2] = imread('orchid8bits.bmp');
[orchid6bits,map3] = imread('orchid6bits.bmp');
[orchid4bits,map4] = imread('orchid4bits.bmp');figure(2);
subplot(2,4,1);imshow(orchid24bits,map1);xlabel('a).orchid24bits');
subplot(2,4,2);imshow(orchid8bits,map2);xlabel('b).orchid8bits');
subplot(2,4,3);imshow(orchid6bits,map3);xlabel('c).orchid6bits');
subplot(2,4,4);imshow(orchid4bits,map4);xlabel('d).orchid4bits');
subplot(2,4,5);imshow(orchid24bits,spring);xlabel('e).orchid24bits(spring)');
subplot(2,4,6);imshow(orchid8bits,summer);xlabel('f).orchid8bits(summer)');
subplot(2,4,7);imshow(orchid6bits,autumn);xlabel('g).orchid6bits(autumn)');
subplot(2,4,8);imshow(orchid4bits,winter);xlabel('h).orchid4bits(winter)');
6 体会对数函数变换
% 体会对数变换
wom01_orig = imread('wom01.gif');
wom01_orig = im2double(wom01_orig)
wom01_gray =mat2gray(log(1+ wom01_orig));
figure(6)
subplot(1,2,1);
imshow(wom01_orig);
xlabel(' a). 原始图像');
subplot(1,2,2);
imshow(wom01_gray,[]); % 自动调整数据的范围以便于显示
xlabel(' b). 对数变换');
1.4 问题与建议
将图像用imread读入以后,要用im2double将图像转化为双精度类型,以便后续的处理;
使用imread可以将图像以及其颜色图一起读入,而要正确显示图像,就要保证其使用了正确的颜色图,此外matlab中本身含有许多颜色图,颜色图是由介于 0 和 1 之间的值组成的矩阵,用于定义诸如曲面、图像以及补片之类的图形对象的颜色。matlab通过将数据值映射到颜色图中的颜色来绘制这些对象。颜色图可以为任意长度,但宽度必须为三列。矩阵中的每一行均使用 RGB 三元组定义一种颜色。RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度必须在 [0, 1] 范围内。值0表示无颜色,值1表示全强度。
2 应用系统设计
2.1 试验内容
用两个不同品牌的数码相机给自己拍两张照片,注意使用不进行光学变焦(广角模式)和数码变焦情况下的最高分辨率,并且用作业中的程序均匀地拉伸你自己的照片的灰度范围【图像文件】【函数文件】。注意体会将你自己的照片输入你自己的程序的全过程。使用你想象出来的算法处理你的照片,并说明处理结果【图像文件】【函数文件】【说明】。保留这张照片,在以后的作业程序中作为处理对象。
2.2 实验结果
% pro1_2 应用系统设计
bd = imread('building.jpg');
bd_g = rgb2gray(bd);
bd_g = im2double(bd_g);
bd_gn = (bd_g-min
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
