Main Content

medfilt3

三维中位数滤波

说明

示例

B = medfilt3(A) 使用 3×3×3 滤波器对三维图像 A 进行滤波。默认情况下,medfilt3 通过在边界处以镜像方式复制值来填充图像。

B = medfilt3(A,[m n p]) 对三维图像 A 执行三维中位数滤波。B 中的每个输出体素包含 A 中对应体素周围 m×n×p 邻域的中位数值。

B = medfilt3(___,padopt) 控制 medfilt3 如何填充数组边界。

示例

全部折叠

创建一个含噪三维曲面。

[x,y,z,V] = flow(50);
noisyV = V + 0.1*double(rand(size(V))>0.95) - 0.1*double(rand(size(V))<0.05);

应用中位数滤波。

filteredV = medfilt3(noisyV);

一起显示含噪曲面和滤波曲面。

subplot(1,2,1)
hpatch1 = patch(isosurface(x,y,z,noisyV,0));
isonormals(x,y,z,noisyV,hpatch1)
set(hpatch1,'FaceColor','red','EdgeColor','none')
daspect([1,4,4])
view([-65,20]) 
axis tight off
camlight left
lighting phong

subplot(1,2,2)
hpatch2 = patch(isosurface(x,y,z,filteredV,0));
isonormals(x,y,z,filteredV,hpatch2)
set(hpatch2,'FaceColor','red','EdgeColor','none')
daspect([1,4,4])
view([-65,20])
axis tight off
camlight left 
lighting phong

输入参数

全部折叠

输入图像,指定为三维数值或逻辑数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

邻域大小,指定为由正奇整数组成的三元素向量。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

填充选项,指定为下列值之一:

描述
"symmetric"用自身的镜像翻转填充数组
"replicate"通过重复边框元素填充数组
"zeros"0 填充数组

数据类型: char | string

输出参量

全部折叠

输出图像,以与输入图像 A 大小和数据类型相同的数值三维数组形式返回。

扩展功能

版本历史记录

在 R2016b 中推出

全部展开

另请参阅