功能:对任意类型数组或多维图像进行滤波。 用法:B = imfilter(A,H) B = imfilter(A,H,option1,option2,...) 或写作g = imfilter(f, w, filtering_mode, boundary_options, size_options) 其中,f为输入图像,w为滤波掩模,g为滤波后图像。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定。具体参数选项见下表: 举例: 例1: originalRGB = imread('peppers.png'); imshow(originalRGB)h = fspecial('motion', 50, 45);%创建一个滤波器 filteredRGB = imfilter(originalRGB, h); figure, imshow(filteredRGB)
例2:
%生成一个8x8的均值滤波器
originalRGB = imread('peppers.png'); imshow(originalRGB)
w = fspecial('average',8);
filteredRGB = imfilter(originalRGB, w);
figure, imshow(filteredRGB)
例3:
单色图像的平滑:
单色图像(如灰度图像)平滑的过程:定义一个系数为1的模板,用这个空间模板的系数去乘以所有像素的值,并将结果除以模板中元素的总数。
彩色图像的平滑:
1、抽取图像:I(R、G、B)三幅分量。
2、 (1): 分别对(R、G、B)这三幅图像分量进行滤波。例如:平均滤波器
>>fc_filtered = imfilter(I, w, 'replicate');
3、重建滤波后的 RGB 的图像。
例子程序:
close all
clear all
clc
I = imread('olivian.jpg');
%提取图像的三个(R、G、B)分量图像
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
%生成一个8x8的均值滤波器
w = fspecial('average',8);
fR = imfilter(R,w,'replicate');
fG = imfilter(G,w,'replicate');
fB = imfilter(B,w,'replicate');
fc_filtered = cat(3,fR,fG,fB);
figure
subplot(121);
imshow(I);title('彩色噪声图像');
subplot(122);
imshow(fc_filtered,'Border','tight');title('彩色图像平滑处理');
|
imfilter使用方法
最新推荐文章于 2025-05-07 09:01:12 发布