数字图像处理课程——作业二

数字图像处理课程——作业二

完成日期:2018.11.03


一、实验题目

  1. 自选一幅图像,把图像的一个子块区域赋值成白色,并显示。
  2. 自选两幅图像,把一幅图像的一个子块拷贝到另一幅图像里并显示。
  3. 自选两幅尺寸大小不同的图像进行连接。例如,两幅图像的高(宽)不同,把高度(宽度)较大的图像等比例缩小,使得两幅图像的高度(宽度)一致,然后把两幅图像横着(竖着)连接起来并显示。
  4. 自选一幅图像,把图像分别进行水平和竖直对称翻转并显示。
  5. 对附件图像1进行掩膜为5x5, 9x9, 15x15, 35x35的均值滤波操作并显示结果图像。
  6. 对附件图像2进行3x3中值滤波操作并显示结果图像。

二、实验步骤以及演示

%1. 自选一幅图像,把图像的一个子块区域赋值成白色,并显示。
im = imread('aaa.jpg');
figure
subplot(1,2,1),imshow(im);
r1 = 50; r2 = 500;
c1 = 20; c2 = 500;
im1 = im;
im1(r1: r2, c1: c2, :) = 255;
subplot(1,2,2),imshow(im1);

演示:
在这里插入图片描述

%2. 自选两幅图像,把一幅图像的一个子块拷贝到另一幅图像里并显示。
im1 = imread('aaa.jpg');
im2 = imread('bbb.jpg');
r1 = 50; r2 = 500;
c1 = 20; c2 = 500;
imt = im1(r1: r2, c1: c2, :);
im2(r1: r2, c1: c2, :) = imt;
imshow(im2)

演示:
在这里插入图片描述

%3. 自选两幅尺寸大小不同的图像进行连接。例如,两幅图像的高(宽)不同,把高度(宽度)较大的图像等比例缩小,使得两幅图像的高度(宽度)一致,然后把两幅图像横着(竖着)连接起来并显示。
im1 = imread('bbb.jpg');
im2 = imread('ccc.jpg');
figure;
subplot(1,2,1),imshow(im1)
subplot(1,2,2),imshow(im2)
[r1,c1,d1] = size(im1);
[r2,c2,d2] = size(im2);
if r1 >= r2
    (r2 / r1) * c1
    c1 = (r2 / r1) * c1;
    r1 = r2;
else
    c2 = (r1 / r2) * c2;
    r2 = r1;
end
im1 = imresize(im1, [r1 c1]);
im2 = imresize(im2, [r2 c2]);
c = [im1, im2];
figure;
imshow(c);

演示:
输入:
在这里插入图片描述

输出:
在这里插入图片描述

%4. 自选一幅图像,把图像分别进行水平和竖直对称翻转并显示。
im = imread('bbb.jpg');
im1 = flipdim(im, 1);
im2 = flipdim(im, 2);
figure
subplot(1,3,1),imshow(im);
subplot(1,3,2),imshow(im1);
subplot(1,3,3),imshow(im2);

演示:
在这里插入图片描述

%5. 对附件图像1进行掩膜为5x5, 9x9, 15x15, 35x35的均值滤波操作并显示结果图像。
im = imread('1.tif');
figure;
subplot(2,3,1),imshow(im);
h = fspecial('average', 3);
im1 = imfilter(im, h, 'corr', 'replicate');
subplot(2,3,2),imshow(im1);
h = fspecial('average', 5);
im2 = imfilter(im, h, 'corr', 'replicate');
subplot(2,3,3),imshow(im2);
h = fspecial('average', 9);
im3 = imfilter(im, h, 'corr', 'replicate');
subplot(2,3,4),imshow(im3);
h = fspecial('average', 15);
im4 = imfilter(im, h, 'corr', 'replicate');
subplot(2,3,5),imshow(im4);
h = fspecial('average', 35);
im5 = imfilter(im, h, 'corr', 'replicate');
subplot(2,3,6),imshow(im5);

演示:
在这里插入图片描述

%6. 对附件图像2进行3x3中值滤波操作并显示结果图像。
im = imread('2.tif');
figure 
subplot(1,2,1),imshow(im);
im1 = medfilt2(im,[3,3]);
subplot(1,2,2),imshow(im1);

演示:
在这里插入图片描述

三、实验心得

  这周作业可能因为比较简单,然后操作也不多,所以我没有遇到什么特别大的困难,唯一遇到的一个难题就是在做图片缩放的时候,我用size()这个函数来得到图像的长和宽,可是如果用 [r c] = size(img) 的话,不知道为什么会出现很奇怪的结果,比如960*960的图像,得到的 [r c] = [960 2880], 就是变成了 [长,宽 * 3],后来查了一下发现size函数返回的是一个三个数的矩阵[长,宽,通道数],可是为什么我用[长 宽]就得到这么奇怪的结果呢(主要是看别人打的都可以)?所以后来只能用[长,宽,通道数],然后后续操作再弃掉通道数。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值