Matlab 以邻域尺寸3×3,对原始图像在RGB空间进行邻域平均的代码
时间: 2024-03-26 11:40:27 浏览: 124
以下是Matlab代码实现:
```matlab
% 读入原始图像
img = imread('原始图像.jpg');
% 将图像从uint8转换为double
img = im2double(img);
% 获取图像的大小
[height, width, ~] = size(img);
% 定义邻域尺寸
n = 3;
% 对邻域内的像素进行平均
for i = 1:height-n+1
for j = 1:width-n+1
% 获取邻域内的像素值
neighborhood = img(i:i+n-1, j:j+n-1, :);
% 计算邻域内像素的平均值
avg = mean(mean(neighborhood));
% 将邻域内的像素值替换为平均值
img(i:i+n-1, j:j+n-1, :) = avg;
end
end
% 显示处理后的图像
imshow(img);
```
同样需要注意的是,这里对RGB三个通道分别进行了邻域平均,如果需要在其他颜色空间进行操作,可以先将图像转换到对应的颜色空间再进行操作。
相关问题
Matlab 以邻域尺寸2×2,对原始图像在RGB空间进行邻域平均的代码
以下是Matlab代码实现:
```matlab
% 读入原始图像
img = imread('原始图像.jpg');
% 将图像从uint8转换为double
img = im2double(img);
% 获取图像的大小
[height, width, ~] = size(img);
% 定义邻域尺寸
n = 2;
% 对邻域内的像素进行平均
for i = 1:height-n+1
for j = 1:width-n+1
% 获取邻域内的像素值
neighborhood = img(i:i+n-1, j:j+n-1, :);
% 计算邻域内像素的平均值
avg = mean(mean(neighborhood));
% 将邻域内的像素值替换为平均值
img(i:i+n-1, j:j+n-1, :) = avg;
end
end
% 显示处理后的图像
imshow(img);
```
注意,这里对RGB三个通道分别进行了邻域平均,如果需要在其他颜色空间进行操作,可以先将图像转换到对应的颜色空间再进行操作。
matlab实现邻域平均法
以下是邻域平均法的Matlab代码实现:
```matlab
function output_image = neighborhood_average(image, kernel_size)
% 对图像进行邻域平均滤波
% 输入参数:
% image: 原始图像
% kernel_size: 滤波器大小,一个正奇数
% 输出参数:
% output_image: 滤波后的图像
% 获取图像的高度和宽度
[height, width] = size(image);
% 计算滤波器的半径
radius = floor(kernel_size / 2);
% 定义输出图像
output_image = zeros(height, width);
% 对每个像素进行滤波
for i = 1:height
for j = 1:width
% 计算当前像素的邻域
row_start = max(1, i - radius);
row_end = min(height, i + radius);
col_start = max(1, j - radius);
col_end = min(width, j + radius);
neighborhood = image(row_start:row_end, col_start:col_end);
% 对邻域内的像素求平均值
output_image(i, j) = mean(neighborhood(:));
end
end
```
使用方法:
```matlab
% 读取图像
image = imread('lena.png');
image = rgb2gray(image);
% 对图像进行邻域平均滤波
output_image = neighborhood_average(image, 5);
% 显示滤波前后的图像
subplot(1, 2, 1);
imshow(image);
title('Original Image');
subplot(1, 2, 2);
imshow(output_image);
title('Filtered Image');
```
其中 `image` 为原始图像,`kernel_size` 为滤波器大小。函数返回滤波后的图像。
阅读全文