MATLAB图像处理:图像截取与灰度调整

需积分: 10 1 下载量 11 浏览量 更新于2024-09-10 收藏 975KB DOCX 举报
"这篇资源主要涉及的是MATLAB在图像处理中的应用,包括图像的规范化、图像的裁剪以及灰度图像的分辨率降低。" 在MATLAB中,图像处理是一项重要的功能,这里给出了三个不同的任务来展示如何操作图像。 1. 图像规范化的MATLAB实现: 在图像处理中,规范化是为了使图像的像素值在一个特定的范围内,例如0到1。程序中的错误主要在 Line 7 和 Line 8。Line 7 应该将图像的最小值减去,以确保所有像素值非负,而Line 8 应该除以最大像素值来得到归一化值。修正后的代码如下: ```matlab f = f - min(f(:)); % 将图像的最小值减去 f = f ./ max(f(:)); % 除以最大值进行归一化 ``` 2. 图像裁剪与显示: 这个任务要求读取图像,然后以图像中心为中心裁剪出原图的一半,并在同一个窗口并排显示原图和裁剪后的图像。MATLAB代码如下: ```matlab I = imread('rose.tif'); % 读取图像 [MN] = size(I); % 获取图像尺寸 J = uint8(zeros(M/2, N/2)); % 初始化裁剪后的图像矩阵 J = I(M/2-M/4:M/2+M/4, N/2-N/4:N/2+M/4); % 裁剪图像 figure, subplot(121), imshow(I); % 显示原图 subplot(122), imshow(J); % 显示裁剪后的图像 ``` 3. 灰度图像分辨率降低: 函数 `hw2_3` 的目标是将输入图像的灰度级别减少到原来的1/32,并保持输入图像的数据类型。首先,如果输入是double类型,需要将其乘以255转换为0-255范围。然后,通过除以32并向下取整来降低灰度分辨率。最后,根据输入图像的类型(double或uint8),转换新图像的值。修正后的函数如下: ```matlab function J = hw2_3(I) if strcmp(class(I), 'double') I_255 = I * 255; else I_255 = double(I); end J = floor(I_255 / 32); % 降低灰度分辨率 J = mat2gray(J); % 转换为归一化值 if strcmp(class(I), 'uint8') J = uint8(J * 255); end end ``` 这些MATLAB代码示例展示了基本的图像处理操作,如读取图像、图像裁剪、规范化、灰度级别的调整以及数据类型的转换,这些都是在图像处理领域常见的任务。