【论文代码】SML部分代码阅读

SML中的边界抑制以及高斯平滑

边界平滑抑制类

class BoundarySuppressionWithSmoothing(nn.Module):
    """
    Apply boundary suppression and dilated smoothing  边界抑制,扩张平滑
    """

初始化

 def __init__(self, boundary_suppression=True, boundary_width=4, boundary_iteration=4,
                 dilated_smoothing=True, kernel_size=7, dilation=6):

定义一些参数

super(BoundarySuppressionWithSmoothing, self).__init__()
self.kernel_size = kernel_size						# 卷积核大小
self.dilation = dilation                            # 扩张
self.boundary_suppression = boundary_suppression    # 边界抑制
self.boundary_width = boundary_width               	# 边界宽度
self.boundary_iteration = boundary_iteration       	# 边界迭代

创建高斯核

sigma = 1.0
size = 7
# function为二维高斯分布的概率密度函数
gaussian_kernel = np.fromfunction(lambda x, y: 
                           (1/(2*math.pi*sigma**2)) * math.e ** ((-1*((x-(size-1)/2)**2+(y-(size-1)/2)**2))/(2*sigma**2)), 
                           (size, size))	# 构造高斯核 (7,7)    3 * sigma + 1
gaussian_kernel /= np.sum(gaussian_kernel)	# 除以高斯核中所有元素之和(加权平均,避免图像像素溢出)
gaussian_kernel = torch.Tensor(gaussian_kernel).unsqueeze(0).unsqueeze(0)
self.dilated_smoothing = dilated_smoothing	# 扩张平滑

l a m b d a ( x , y ) = 1 2 ∗ π ∗ σ 2 e x p ( − ( x − s i z e − 1 2 ) 2 + ( y − s i z e − 1 2 ) 2 2 ∗ σ 2 ) lambda(x,y) = \frac{1}{2 * \pi * \sigma^2} exp(-\frac{(x - \frac{size-1}{2})^2 + (y - \frac{size-1}{2})^2}{2 * \sigma^2}) lambda(x,y)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SML(Standard ML)是一种函数式编程语言,其数据格式通常使用 S-expression 表示。S-expression 是一种基于列表的嵌套数据结构,它由一些原子和列表组成。在 SML 中,可以使用 SML/NJ 库来进行 S-expression 的保存和解析。以下是一个基本的示例代码: ```sml (* 保存 S-expression 到文件 *) fun saveSexpToFile (sexp: SExp.sexp, filename: string) = let val file = TextIO.openOut filename val _ = SExpIO.output sexp file val _ = TextIO.closeOut file in () end (* 从文件中读取 S-expression *) fun loadSexpFromFile (filename: string) = let val file = TextIO.openIn filename val sexp = SExpIO.input file val _ = TextIO.closeIn file in sexp end ``` 在这个代码示例中,我们使用了 SML/NJ 库中的 SExp 和 SExpIO 模块。SExp 模块定义了 S-expression 的数据类型,而 SExpIO 模块则提供了输入输出 S-expression 的函数。 对于保存 S-expression 到文件,我们定义了一个 `saveSexpToFile` 函数,该函数接受一个 S-expression 和一个文件名作为参数,并将 S-expression 输出到指定的文件中。具体步骤是使用 `TextIO.openOut` 函数打开文件,使用 `SExpIO.output` 函数将 S-expression 写入文件,最后使用 `TextIO.closeOut` 函数关闭文件。 对于从文件中解析 S-expression,我们定义了一个 `loadSexpFromFile` 函数,该函数接受一个文件名作为参数,并返回从文件中读取的 S-expression。具体步骤是使用 `TextIO.openIn` 函数打开文件,使用 `SExpIO.input` 函数从文件中读取 S-expression,最后使用 `TextIO.closeIn` 函数关闭文件。 需要注意的是,以上代码示例中的 SML/NJ 库是针对 SML/NJ 环境的。如果你使用的是其他 SML 实现,可能需要使用该实现所提供的相应库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值