欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 实验 1 图像基本操作

实验 1 图像基本操作

2025/4/19 18:13:14 来源:https://blog.csdn.net/m0_51366201/article/details/140071547  浏览:    关键词:实验 1 图像基本操作

1. 实验目的

①熟悉 Photoshop 基本操作;
②掌握 Matlab 、Python+OpenCV 中处理图像的基本方法;
③掌握图像的半调转换和抖动转换。

2. 实验内容

①Photoshop 基本操作:打开图像文件,选择区域,旋转、裁剪图像、图层操作;
②Matlab 、Python+OpenCV 基本操作:读入图像,改变图像尺寸,旋转、裁剪图像,计算图像的基本特征指标。
③使用 Matlab 完成图像的半调转换和抖动转换并显示结果。

3. 实验过程

3.1 Photoshop 图像基本操作

① 实验步骤(需详细介绍每一步实验步骤)
(1) 打开图像文件:

  • 首先打开Ps软件
  • 其次打开图片

在这里插入图片描述

(2) 选择区域:
在这里插入图片描述

在这里插入图片描述

(3) 裁剪图像:

在这里插入图片描述
按下Enter键

在这里插入图片描述
(4) 旋转图像:

在这里插入图片描述
可以选择选择180°等各类操作
(5) 图层操作:(包括图层的创建,复制,删除,锁定,合并,显示隐藏图层和更改图层顺序)
② 实验结果展示

3.2 Matlab 、Python+OpenCV 图像基本操作

3.2.1 Matlab 实现:
使用 Matlab 编写代码完成读入图像,改变图像尺寸,旋转、裁剪图像, 计算图像的基本特征指标等功能并展示结果。
①主要函数及其参数

请填写 以下Matlab 函数对应的参数说明:
imread(filename)读取名为 filename的图像
imfinfo (filename)获取图像名为 filename的各种信息
translate(SE, [y x])是一个用来进行平移操作的函数,其中SE表示待平移的对象或坐标系,[y x]表示平移向量,用于指定在y轴和x轴方向上的位移量。
imrotate(img,30)是一个用于图像旋转的函数。其中,img代表待旋转的图像,而30表示旋转的角度,以逆时针方向为正
imresize(img,a,‘method’)是一个用于对图像进行尺寸调整的函数。其中,img表示待调整尺寸的图像,a表示尺寸调整的比例或目标尺寸,而'method'表示所采用的调整方法
close()是一个用于关闭图形窗口的函数
subplot(m,n,p)是一个用于在图形窗口中创建子图的函数, subplot函数用于将图形窗口划分为一个m×n的网格,并在指定位置p上创建一个子图
rgb2gray(image)是一个用于将RGB图像转换为灰度图像的函数
imcomplement(image)是一个用于对图像进行反色处理的函数

② 实验代码展示

clear all;
clc;
% 读入图像
image = imread('D:\WorkSpace\matlab\lena.png');% 显示原始图像
figure;
subplot(2, 3, 1);
imshow(image);
title('原始图像');% 改变图像尺寸
resizedImage = imresize(image, 0.5);% 显示改变尺寸后的图像
subplot(2, 3, 2);
imshow(resizedImage);
title('改变尺寸后的图像');% 旋转图像
rotatedImage = imrotate(image, 45);% 显示旋转后的图像
subplot(2, 3, 3);
imshow(rotatedImage);
title('旋转后的图像');% 裁剪图像
croppedImage = image(50:200, 100:300, :);% 显示裁剪后的图像
subplot(2, 3, 4);
imshow(croppedImage);
title('裁剪后的图像');% 计算图像的基本特征指标
grayImage = rgb2gray(image);
meanValue = mean2(grayImage);
stdDeviation = std2(grayImage);
maxValue = max(grayImage(:));
minValue = min(grayImage(:));% 显示图像的特征指标
subplot(2, 3, [5, 6]);
imshow(grayImage);
title('图像的灰度图');
text(10, 20, ['均值: ' num2str(meanValue)], 'Color', 'r');
text(10, 40, ['标准差: ' num2str(stdDeviation)], 'Color', 'r');
text(10, 60, ['最大值: ' num2str(maxValue)], 'Color', 'r');
text(10, 80, ['最小值: ' num2str(minValue)], 'Color', 'r');

③ 实验结果展示

在这里插入图片描述

3.2.2 Python+OpenCV 实现

使用 Python+OpenCV 库编写代码完成读入图像,改变图像尺寸,旋转、 裁剪图像,计算图像的基本特征指标等功能并展示结果。
① 主要函数及其参数
请填写以下函数对应的参数说明:

请填写 以下Matlab 函数对应的参数说明:
cv.imread(filename, [flags])是用来读取图像文件的。其中,filename是要读取的像文件的路径,flags是一个标志位参数。
cv2.rotate用于对图像进行旋转操作。根据引用,cv2.rotate有三个参数,分别是待旋转的图像(img),旋转方向(cv2.ROTATE_90_CLOCKWISE、cv2.ROTATE_180、cv2.ROTATE_90_COUNTERCLOCKWISE),以及旋转后的图像(rotate_90_cv、rotate_180_cv、rotate_270_cv)
cv2.resize是OpenCV库中用于调整图像大小的函数

② 实验代码展示

import cv2 as cv# 读入图像
image = cv.imread('lena.png')# 显示原始图像
cv.imshow('原始图像', image)
cv.waitKey(0)# 改变图像尺寸
resized_image = cv.resize(image, (0, 0), fx=0.5, fy=0.5)# 显示改变尺寸后的图像
cv.imshow('改变尺寸后的图像', resized_image)
cv.waitKey(0)# 旋转图像
height, width = image.shape[:2]
rotation_matrix = cv.getRotationMatrix2D((width / 2, height / 2), 45, 1)
rotated_image = cv.warpAffine(image, rotation_matrix, (width, height))# 显示旋转后的图像
cv.imshow('旋转后的图像', rotated_image)
cv.waitKey(0)# 裁剪图像
cropped_image = image[50:200, 100:300]# 显示裁剪后的图像
cv.imshow('裁剪后的图像', cropped_image)
cv.waitKey(0)# 计算图像的基本特征指标
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
mean_value = cv.mean(gray_image)[0]
standard_deviation = cv.meanStdDev(gray_image)[1][0][0]
min_value, max_value, _, _ = cv.minMaxLoc(gray_image)# 显示图像的特征指标
cv.imshow('图像的灰度图', gray_image)
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(gray_image, f" {mean_value}", (10, 20), font, 0.6, (255, 255, 255), 1)
cv.putText(gray_image, f" {standard_deviation}", (10, 40), font, 0.6, (255, 255, 255), 1)
cv.putText(gray_image, f" {max_value}", (10, 60), font, 0.6, (255, 255, 255), 1)
cv.putText(gray_image, f" {min_value}", (10, 80), font, 0.6, (255, 255, 255), 1)
cv.imshow('图像的特征指标', gray_image)
cv.waitKey(0)cv.destroyAllWindows()

③ 实验结果展示
原始图像

在这里插入图片描述

改变尺寸后的图像

在这里插入图片描述
旋转后的图像

在这里插入图片描述
裁剪后的图像
在这里插入图片描述
显示图像的特征信息
在这里插入图片描述

3.3 图像的半调转换和抖动转换。

3.3.1 图像的半调转换
使用 Matlab 编写代码并读取一张图像,完成4×4 的半调转换并显示原图和结果。
① 实验代码展示

% 读入图像
image = imread('lena.png');% 显示原图像
figure;
subplot(1, 2, 1);
imshow(image);
title('原始图像');% 获取图像大小和通道数
[height, width, ~] = size(image);% 计算每个像素的阈值
threshold = 255 / 2;% 进行4×4半调转换
for i = 1 : 4 : heightfor j = 1 : 4 : widthblock = image(i : i + 3, j : j + 3, :);gray_block = rgb2gray(block);binary_block = gray_block > threshold;block(:, :, 1) = uint8(binary_block) * 255;block(:, :, 2) = uint8(binary_block) * 255;block(:, :, 3) = uint8(binary_block) * 255;image(i : i + 3, j : j + 3, :) = block;end
end% 显示半调转换后的图像
subplot(1, 2, 2);
imshow(image);
title('半调转换后的图像');

② 实验结果展示

在这里插入图片描述

3.3.2 图像的抖动转换

(1)调用 Matlab 中的抖动函数,dither 。观察原图和抖动转换后的结果。
① 实验代码展示

% 读入图像
image = imread('lena.png');% 将图像转换为灰度图像
gray_image = rgb2gray(image);% 显示原图像
figure;
subplot(1, 2, 1);
imshow(image);
title('原始图像');% 进行抖动转换
dithered_image = dither(gray_image);% 显示抖动转换后的图像
subplot(1, 2, 2);
imshow(dithered_image);
title('抖动转换后的图像');

② 实验结果展示

在这里插入图片描述

4. 实验小结

①在安装 Matlab 和 OpenCV 库时,你遇到了哪些问题,是如何解决的。
答:没有任何困难,按照网上教程傻瓜式安装即可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词