MATLAB中图像邻域操作与可视化

close all;                  % 关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量
clear all;
clc;
A = imread('cameraman.tif'); % 读取图像
A1 = im2double(A);            % 数值类型转换
B1 = nlfilter(A1, [4 4], 'std2');% 对图像A利用滑动邻域操作函数进行处理
fun = @(x) max(x(:));           % 对图像A利用滑动邻域操作函数进行处理
B2 = nlfilter(A1, [3 3], fun);
B3 = nlfilter(A1, [6 6], fun);
set(0, 'defaultFigurePosition', [100, 100, 1000, 500]);% 修改图形图像位置的默认设置
set(0, 'defaultFigureColor', [1, 1, 1])% 修改图形背景颜色的设置
subplot(131), imshow(B1); % 显示处理后图像
subplot(132), imshow(B2);      
subplot(133), imshow(B3);

解释:

  • close all;:关闭所有打开的图形窗口。

  • clear all;:清空工作空间中的所有变量。

  • clc;:清除命令窗口中的所有文本。

  • A = imread('cameraman.tif');:读取名为cameraman.tif的图像,并赋值给A

  • A1 = im2double(A);:将图像A的数据类型从默认的无符号8位整数转换为双精度浮点数,以便进行数值计算。

  • B1 = nlfilter(A1, [4 4], 'std2');:使用nlfilter函数对图像A1进行邻域操作。[4 4]定义了4x4的滑动邻域大小,'std2'指定了对邻域内像素的标准差的平方进行计算。

  • fun = @(x) max(x(:));:定义了一个匿名函数fun,该函数接受一个矩阵x作为输入,并返回该矩阵所有元素中的最大值。

  • B2 = nlfilter(A1, [3 3], fun);:使用nlfilter函数和匿名函数fun对图像A1进行邻域操作。这里使用3x3的滑动邻域大小。

  • B3 = nlfilter(A1, [6 6], fun);:使用nlfilter函数和匿名函数fun对图像A1进行邻域操作。这里使用6x6的滑动邻域大小。

  • set(0, ...);:设置图形窗口的位置和背景颜色。

  • subplot(131), imshow(B1);:在第一个子图(1,3,1)中显示处理后图像B1

  • subplot(132), imshow(B2);:在第二个子图(1,3,2)中显示处理后图像B2

  • subplot(133), imshow(B3);:在第三个子图(1,3,3)中显示处理后图像B3

拓展:

  1. 保存处理后的图像:可以将处理后的图像B1B2B3保存为文件。
% 保存处理后的图像
imwrite(B1, 'cameraman_std2_4x4.png');
imwrite(B2, 'cameraman_max_3x3.png');
imwrite(B3, 'cameraman_max_6x6.png');
  1. 应用邻域操作进行图像分析:邻域操作可以用于图像分析,比如边缘检测、滤波或特征增强。

  2. 分析邻域操作的影响:可以分析邻域操作对图像内容的影响,以及在不同应用场景下的作用。

  3. 尝试其他邻域操作:可以尝试使用其他类型的邻域操作,如均值滤波、中值滤波等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿斯弗的撒旦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值