Mahotas 简明教程
Mahotas - Conditional Dilating Image
在上一章中,我们探讨了图像膨胀的概念,该操作用于扩展图像中区域的边界的所有像素。另一方面,条件膨胀基于某些条件扩展特定区域的像素。
In our previous chapter, we explored the concept of image dilation, an operation used to expand all the pixels to the boundaries of regions in an image. Conditional dilation on the other hand, expands the pixels of certain specific regions, based on some conditions.
条件可以基于图像像素的强度值或图像中某些特定模式。
The condition can be based on the intensity values of the image pixels or some specific pattern in the image.
例如,让我们考虑一个灰度图像。您可以有条件地仅扩展满足特定强度阈值的像素,而不是扩展所有前景像素。
For example, let’s consider a grayscale image. Instead of dilating all foreground pixels, you could conditionally dilate only those pixels that meet a certain intensity threshold.
如果像素的强度高于预定义阈值,则应用膨胀;否则,像素保持不变。
If a pixel’s intensity is above a predefined threshold, then dilation is applied; otherwise, the pixel remains unchanged.
Conditional Dilating Image in Mahotas
在 mahotas 中,条件膨胀是传统膨胀操作的扩展,包含基于第二个图像的条件,通常称为“标记图像”。
In mahotas, conditional dilation is an extension of the traditional dilation operation that comprises a condition based on a second image, often referred to as the "marker image."
它允许您控制膨胀过程,以便仅在标记图像具有特定像素值的位置发生膨胀。
It allows you to control the dilation process such that dilation only occurs at locations where the marker image has specific pixel values.
我们可以在 mahotas 中使用 cdilate() 函数对图像执行条件膨胀。该函数基于标记图像的像素值将膨胀过程限制在特定区域。
We can perform the conditional dilation on an image in mahotas using the cdilate() function. This function restricts the dilation process to specific regions based on the marker image’s pixel values.
The mahotas.cdilate() function
Mahotas 中的 cdilate() 函数有两个输入−输入图像和掩码(条件)数组。它根据提供的条件对输入图像执行条件膨胀,并返回生成的膨胀图像。
The cdilate() function in Mahotas takes two inputs − the input image and a mask (condition) array. It performs conditional dilation on the input image based on the provided condition, and it returns the resulting dilated image.
掩码用于识别图像中的特定区域。它们充当过滤器,突出显示某些区域,同时忽略其他区域。
Masks are used to identify specific regions within an image. They act as a filter that highlights certain areas while disregarding others.
Syntax
以下是 cdilate() 函数的基本语法 −
Following is the basic syntax of the cdilate() function −
mahotas.cdilate(f, g, Bc={3x3 cross}, n=1)
其中,
Where,
-
f − It is the input image on which the conditional dilation is to be performed.
-
g − It is the mask to be applied during conditional dilation.
-
Bc = {3×3 cross} (optional) − It is a structuring element used for dilation. Default is {3×3 cross}.
-
n − It is the number of iterations of the dilation operation. By default, it is set to 1, indicating a single iteration.
Example
在以下示例中,我们通过增加像素强度在图像上执行条件膨胀 −
In the following example, we are performing the conditional dilation on an image by scaling up its pixel intensity −
import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image= mh.imread('nature.jpeg')
g = image * 2
conditional_dilated_image = mh.cdilate(image, g)
# Create a figure with subplots
fig, axes = plt.subplots(1, 2, figsize=(7,5 ))
# Display the original image
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# Display the conditional dilated image
axes[1].imshow(conditional_dilated_image, cmap='gray')
axes[1].set_title('Conditional Dilated Image')
axes[1].axis('off')
# Adjust the layout and display the plot
plt.tight_layout()
plt.show()
执行上面的代码后,我们得到以下输出: -
After executing the above code, we get the following output −
Using Structuring Element
要使用 Mahotas 中的结构元素执行条件膨胀,首先,我们需要定义膨胀的应用条件。例如,您可以基于像素强度指定一个条件或提供一个二进制掩模。
To perform conditional dilation using structuring element in Mahotas, first, we need to define the condition based on which the dilation will be applied. For example, you can specify a condition based on pixel intensity or provide a binary mask.
接下来,选择一个定义膨胀邻域的结构元素。Mahotas 提供了几个预定义的结构元素,如圆盘和正方形,您可以根据所需形状和大小进行选择。
Next, choose a structuring element that defines the neighborhood for dilation. Mahotas provides several pre−defined structuring elements, such as disks and squares, which you can select based on the desired shape and size.
最后,检索结果图像,它仅包含满足条件的膨胀效果。
Finally, retrieve the resulting image, which will contain the dilation effects only where the condition is satisfied.
Example
在此,我们尝试使用结构元素对图像执行条件膨胀 −
In here, we are trying to perform conditional dilation on an image using structuring elements −
import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image= mh.imread('nature.jpeg', as_grey = True).astype(np.uint8)
# Define the condition based on pixel intensity
condition = image > 100
# Define a structuring element for dilation
structuring_element = mh.disk(5)
conditional_dilated_image = mh.cdilate(image, condition, structuring_element)
# Create a figure with subplots
fig, axes = plt.subplots(1, 2, figsize=(7,5 ))
# Display the original image
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# Display the conditional dilated image
axes[1].imshow(conditional_dilated_image, cmap='gray')
axes[1].set_title('Conditional Dilated Image')
axes[1].axis('off')
# Adjust the layout and display the plot
plt.tight_layout()
plt.show()
获得的输出如下所示 −
The output obtained is as shown below −
Using a Custom Condition Function
我们还可以使用自定义条件函数对图像执行条件膨胀。
We can also perform conditional dilation on an image using a custom condition function.
为此,我们首先定义一个自定义条件函数来确定哪些像素应该进行膨胀。
To achieve this, we first define a custom condition function that determines which pixels should undergo dilation.
接下来,选择一个结构元素来定义膨胀操作的形状和大小。
Next, choose a structuring element to define the shape and size of dilation operation.
最后,执行条件膨胀并检索膨胀图像。
Finally, perform the conditional dilation and retrieve the dilated image.
Example
现在,我们使用自定义条件函数膨胀图像 −
Now, we are dilating an image using a custom condition function −
import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
# Load image
image = mh.imread('sea.bmp', as_grey=True).astype(np.uint8)
# Define a custom condition function
def custom_condition(pixel_value):
return pixel_value > 100
# Define a structuring element
structuring_element = mh.disk(5)
# Create a binary mask based on the custom condition function
condition = custom_condition(image)
# Perform conditional dilation
conditional_dilated_image = mh.cdilate(image, condition, structuring_element)
# Create a figure with subplots
fig, axes = plt.subplots(1, 2, figsize=(7,5 ))
# Display the original image
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# Display the conditional dilated image
axes[1].imshow(conditional_dilated_image, cmap='gray')
axes[1].set_title('Conditional Dilated Image')
axes[1].axis('off')
# Adjust the layout and display the plot
plt.tight_layout()
plt.show()
以下是上面代码的输出: -
Following is the output of the above code −