imdilate
膨胀图像
说明
示例
用垂直线结构元素膨胀图像
将二值图像读入工作区。
BW = imread('text.png');
创建一个垂直线形结构元素。
se = strel('line',11,90);
用垂直线结构元素膨胀图像并比较结果。
BW2 = imdilate(BW,se);
imshow(BW), title('Original')
figure, imshow(BW2), title('Dilated')
用滚动球膨胀灰度图像
将灰度图像读入工作区。
originalI = imread('cameraman.tif');
创建一个非平坦球形结构元素。
se = offsetstrel('ball',5,5);
膨胀该图像。
dilatedI = imdilate(originalI,se);
显示原始图像和膨胀的图像。
imshowpair(originalI,dilatedI,'montage')
确定结构元素组合域
创建两个平面线形结构元素,一个为 0 度,另一个为 90 度。
se1 = strel('line',3,0)
se1 = strel is a line shaped structuring element with properties: Neighborhood: [1 1 1] Dimensionality: 2
se2 = strel('line',3,90)
se2 = strel is a line shaped structuring element with properties: Neighborhood: [3x1 logical] Dimensionality: 2
使用 'full'
选项,依次用两个结构元素膨胀标量值 1。
composition = imdilate(1,[se1 se2],'full')
composition = 3×3
1 1 1
1 1 1
1 1 1
使用球面结构元素膨胀三维空间中的点
创建一个具有两个点的逻辑三维体。
BW = false(100,100,100); BW(25,25,25) = true; BW(75,75,75) = true;
使用球面结构元素膨胀该三维体。
se = strel('sphere',25);
dilatedBW = imdilate(BW,se);
可视化膨胀的三维图像体。
figure isosurface(dilatedBW, 0.5)
输入参数
I
— 输入图像
灰度图像 | 二值图像 | 压缩二值图像
输入图像,指定为灰度图像、二值图像或任意维度的压缩二值图像。
数据类型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
SE
— 结构元素
strel
对象 | offsetstrel
对象 | strel
对象的数组 | offsetstrel
对象的数组
结构元素,指定为标量 strel
对象或 offsetstrel
对象。SE
也可以是 strel
对象或 offsetstrel
对象的数组,在这种情况下,imdilate
连续使用每个结构元素对输入图像执行多次膨胀。
imdilate
可对除数据类型为 logical
的图像之外的所有图像执行灰度膨胀。在这种情况下,结构元素必须为平面结构,并且 imdilate
执行二值膨胀。
nhood
— 结构元素邻域
0
和 1
组成的矩阵
结构元素邻域,指定为 0
和 1
组成的矩阵。
示例: [0 1 0; 1 1 1; 0 1 0]
shape
— 输出图像的大小
'same'
(默认) | 'full'
输出图像的大小,指定为下列值之一。
值 | 描述 |
---|---|
| 输出图像与输入图像大小相同。如果 |
| 计算完全膨胀。 |
数据类型: char
| string
输出参量
详细信息
二值膨胀
用 B 对 A 执行二值膨胀(记为 A ⨁ B)的过程定义为如下集合运算:
其中 是结构元素 B 的反射。换句话说,它是满足以下条件的像素位置 z 的集合:当反射的结构元素平移至位置 z 时与 A 中的前景像素存在重叠。注意,一些应用使用的膨胀定义不会反射结构元素。
有关二值膨胀的详细信息,请参阅 [1]。
灰度膨胀
在一般形式的灰度膨胀中,结构元素有高度。用 B(x, y) 对 A(x, y) 执行灰度膨胀的过程定义为:
其中 DB 是结构元素 B 的域,A(x, y) 假定为图像域外的 –∞。请注意,一些应用程序使用公式 A(x + x′, y + y′) 而不是 A(x – x′, y – y′) 来定义灰度膨胀。
要创建具有非零高度值的结构元素,请使用语法 strel(nhood,height)
,其中 height
给出高度值,nhood
对应于结构元素域 DB。
灰度膨胀最常使用平面结构元素 (B(x,y) = 0)。使用这种结构元素的灰度膨胀等效于使用局部最大值运算符:
除了 strel(nhood,height)
、strel('arbitrary',nhood,height)
和 strel('ball',___)
之外,所有 strel
语法都生成平面结构元素。
提示
参考
[1] Gonzalez, Rafael C., Richard E. Woods, and Steven L. Eddins. Digital Image Processing Using MATLAB. Third edition. Knoxville: Gatesmark Publishing, 2020.
[2] Haralick, Robert M., and Linda G. Shapiro. Computer and Robot Vision. 1st ed. USA: Addison-Wesley Longman Publishing Co., Inc., 1992, pp. 158-205.
[3] Boomgaard, Rein van den, and Richard van Balen. “Methods for Fast Morphological Image Transforms Using Bitmapped Binary Images.” CVGIP: Graphical Models and Image Processing 54, no. 3 (May 1, 1992): 252–58. https://doi.org/10.1016/1049-9652(92)90055-3.
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
imdilate
支持 C 代码生成(需要 MATLAB® Coder™)。请注意,如果您选择通用的MATLAB Host Computer
目标平台,imdilate
生成的代码将使用平台特定的预编译共享库。使用共享库可保留性能上的优化,但适用范围仅限于生成的代码所适用的目标平台。有关详细信息,请参阅Image Processing Toolbox 中代码生成支持的类型。输入图像
I
必须为二维或三维。结构元素
SE
必须为单个元素,不支持结构元素组成的数组。要获得与使用结构元素数组所得结果相同的结果,请按顺序调用该函数。当目标为
MATLAB Host Computer
时,packopt
和shape
参量必须为编译时常量。当目标是任何其他平台时,不支持packopt
语法。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
输入图像
I
必须为二维或三维。不支持压缩二值输入图像(
packopt
语法)。对于具有三个以上通道的三维输入图像,只可生成 C/C++ 代码。
结构元素
SE
必须为编译时常量。仅可为一维或二维结构元素生成 CUDA® 代码。如果结构元素为三维,则可生成 C/C++ 代码。三维以上的结构元素不支持代码生成。对于非平坦结构元素,只可生成 C/C++ 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
gpuArray
输入必须是uint8
或logical
类型。结构元素
SE
必须为平面和二维的。GPU 不支持
packopt
参量。
有关详细信息,请参阅GPU 上的图像处理。
版本历史记录
在 R2006a 之前推出R2022b: 支持基于线程的环境
imdilate
现在支持基于线程的环境。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)