pytorch 20 基于pytorch实现腐蚀膨胀、开运算闭运算等形态学操作

在一些图像处理项目中,有时需要对图像进行腐蚀膨胀和各种值处理,引入opencv处理后,数据无法进行快速的值处理,如值域截取、使用mask、where操作等。因此,可以使用torch实现腐蚀膨胀,从而避免对数据结构的修改,同时保证了在一个模型内实现所有操作。(当然,opencv中的值域截取也是可以很方便的,具体可以参考以下链接中的第七节c++上opencv的常用数组操作_a486259的博客-CSDN博客)

但是,基于torch实现的腐蚀膨胀,有一定的假设前提:所有的结构元素都为方形算子。实现后可以作用于C++下的libtorch中,但是ksize的尺寸只能是固定的,无法变动输入。在实际使用中,图像是否二值图,不会影响结果。只是会选择算子对应区域中值最大的元素进行替代。

基于腐蚀膨胀的基本操作的组合,还可以实现开运算、闭运算,顶帽运算等等形态学操作。

核心代码:

#ksize必须为奇数,否则池化后的尺寸会发生变化。此外,stride=1, padding=int((ksize-1)/ 2)也是必须的
ksize=21
max_pool = torch.nn.MaxPool2d(kernel_size=ksize, stride=1, padding=int((ksize-1)/ 2))  #

你可能感兴趣的:(pytorch工程实践,pytorch,深度学习,计算机视觉)