前言:
之所以想到用 pytorch ,主要是因为不想在网络模块中调用 opencv 的函数。
调用 opencv 函数的基本步骤如下:先把 pytorch 的 tensor 转到 cpu 上,然后转换成 numpy,再调整到 uint8 格式,然后才能调用 cv2.erode
。 麻烦不说,还无法充分利用 GPU 的并行加速,同时阻断了 gradient 的传播路径,因此有必要用 pytorch 。
形态学运算的类型
形态学是基于形状处理图像的一组广泛的图像处理运算。形态学运算将结构元素应用于输入图像,从而创建相同大小的输出图像。在形态学运算中,输出图像中每个像素的值基于输入图像中对应像素与其相邻像素的比较。
形态学膨胀和腐蚀
最基本的形态学运算是膨胀和腐蚀。膨胀指将像素添加到图像中对象的边界,而腐蚀指删除对象边界上的像素。对图像中对象添加或删除的像素数量取决于用于处理图像的结构元素的大小和形状。在形态学膨胀和腐蚀运算中,输出图像中任何给定像素的状态通过对输入图像中的对应像素及其相邻像素应用规则来确定。用于处理像素的规则将运算定义为膨胀或腐蚀。下表列出了膨胀和腐蚀的规则。
膨胀和腐蚀的规则
操作 |
规则 |
示例(原始图像和处理后的图像) |
---|---|---|
膨胀 |
输出像素的值是邻域中所有像素的最大值。在 |