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

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

完成日期: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);

演示:
数字图像处理课程——作业二_第1张图片

%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)

演示:
数字图像处理课程——作业二_第2张图片

%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);

演示:
输入:
数字图像处理课程——作业二_第3张图片

输出:
数字图像处理课程——作业二_第4张图片

%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张图片

%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张图片

%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);

演示:
数字图像处理课程——作业二_第7张图片

三、实验心得

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

你可能感兴趣的:(数字图像处理课程——作业二)