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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部