自己编写完整膨胀函数代码
时间: 2023-12-06 09:45:12 浏览: 21
以下是一个完整的膨胀函数的代码实现:
```python
import numpy as np
import cv2
def dilation(img, kernel):
img_h, img_w = img.shape
kernel_h, kernel_w = kernel.shape
pad_h = kernel_h // 2
pad_w = kernel_w // 2
img_pad = np.zeros((img_h + 2 * pad_h, img_w + 2 * pad_w))
img_pad[pad_h:-pad_h, pad_w:-pad_w] = img
output = np.zeros((img_h, img_w))
for i in range(img_h):
for j in range(img_w):
if np.max(img_pad[i:i+kernel_h, j:j+kernel_w]*kernel) > 0:
output[i, j] = 1
return output.astype(np.uint8)
# 举个例子
img = cv2.imread('input.jpg', 0)
kernel = np.ones((3, 3))
result = dilation(img, kernel)
cv2.imwrite('output.jpg', result*255)
```
该函数的输入参数为原始图像和卷积核,输出为膨胀后的图像。在函数内部,首先进行了边界填充以处理边界像素。然后使用两层循环遍历每个像素,并计算该像素周围卷积核中所有像素的最大值。如果最大值大于零,则将该像素标记为白色(即值为1),否则标记为黑色(即值为0)。最后返回输出图像。