Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 光滑局部celing函数_Math_Image Processing_Curve Fitting - Fatal编程技术网

Math 光滑局部celing函数

Math 光滑局部celing函数,math,image-processing,curve-fitting,Math,Image Processing,Curve Fitting,我有一个灰度图像,我想做一个函数 紧跟图像 总是比它的形象更刺耳 在一定的尺度上平滑 换句话说,我想要一个光滑函数,它近似于局部区域中另一个函数的最大值,同时高估该函数在所有点上的值 有什么想法吗 我在这方面的第一个步骤是选择“高点”(通过将图像与高阶二维多项式的最小二乘拟合进行比较),并将二维多项式与其斜率进行匹配。由于第一次安装需要比我的地址空间更多的工作空间,我认为它不会工作,我将不得不想出一些其他的东西 我所做的 我的最终目标是对图像进行平滑调整,以便每个局部区域都使用完整的值范围。

我有一个灰度图像,我想做一个函数

  • 紧跟图像
  • 总是比它的形象更刺耳
  • 在一定的尺度上平滑
  • 换句话说,我想要一个光滑函数,它近似于局部区域中另一个函数的最大值,同时高估该函数在所有点上的值

    有什么想法吗


    我在这方面的第一个步骤是选择“高点”(通过将图像与高阶二维多项式的最小二乘拟合进行比较),并将二维多项式与其斜率进行匹配。由于第一次安装需要比我的地址空间更多的工作空间,我认为它不会工作,我将不得不想出一些其他的东西


    我所做的 我的最终目标是对图像进行平滑调整,以便每个局部区域都使用完整的值范围。关键的认识是,一个“近乎完美”的函数对我来说很好

    下面的过程(从来没有明确的max函数)就是我最后的结果:

    • 使用类似“模糊”的函数查找每个点的局部平均值和标准偏差
    • 偏移图像以获得零平均值。(
      image-=mean;
    • 将每个像素除以其stdev。(
      image/=stdev;
    • most图像现在应该在
      [-1,1]
      中(奇怪的是,我的大多数测试图像在该范围内的质量超过99%,而不是预期的67%)
    • 找出整个图像的标准偏差
    • 将一些span+/-n*sigma映射到您的输出范围

    只需稍加操作,就可以将其转换为我所问的最大函数。

    你能澄清一下,你希望它在某种程度上“平滑”是什么意思吗?此外,在一个“局部区域”的多大范围内,您希望它接近最大值


    快速脏答:源图像和窗口最大值的加权平均值。

    我的快速脏答是从原始图像开始,对每个像素重复以下过程,直到没有更改:

  • 如果可以通过增加像素的值来解决此像素与其相邻像素之间的过大增量,请执行此操作
  • 如果此像素周围的坡度变化过大,可以通过增加像素的值来解决其相邻的坡度变化,请执行此操作
  • 2D版本的外观如下所示:

    for all x:
        d = img[x-1] - img[x]
        if d > DMAX:
            img[x] += d - DMAX
        d = img[x+1] - img[x]
        if d > DMAX:
            img[x] += d - DMAX
    
        dleft = img[x-1] - img[x]
        dright = img[x] - img[x+1]
        d = dright - dleft
        if d > SLOPEMAX:
            img[x] += d - SLOPEMAX
    

    使用RxR滤波器对图像进行最大滤波,然后对最大滤波图像使用R-1阶B样条平滑。B样条曲线的凸包属性保证它将高于原始图像。

    这里有一些简单的东西;我不知道它有多好

  • 要获得平滑效果,请使用您最喜欢的模糊算法。例如,半径5内的平均点。空间成本是图像大小的顺序,时间是图像大小与模糊半径平方的乘积

  • 取每个像素与原始图像的差值,找出
    (原始[i][j]-模糊[i][j])
    的最大值,并将该值添加到模糊图像中的每个像素。该总和保证与原始图像过度接近。时间成本与图像的大小成比例,并具有恒定的附加空间(如果在计算最大值后覆盖模糊图像)


  • 为了做得更好(例如,在某些约束条件下最小化平方误差),您必须选择一些平滑曲线并进行一些实质性的计算。您可以尝试二次或三次样条曲线,但在二维中,样条曲线没有多大乐趣。

    -通过“平滑”,我只希望函数中的小变化(以及它的斜率)从一个像素到下一个像素。理想情况下,我想要一个数学意义上平滑的函数,但这对于一个离散的函数来说是困难的。-局部区域的大小是调谐参数之一。-至于加权平均的想法;加窗的最大值不能够进行阶跃变化吗?或者我读错了。选择N个最接近的局部最大值并根据距离对其进行加权可能会做到这一点…我必须考虑这一点。是的,加窗的最大值可以进行阶跃变化。你可以加权平均值b基于像素与达到最大值的位置之间的距离来平滑,或者你可以应用一些平滑函数。我意识到存在一个问题:如果你有一个斜率变化太大的局部最大值,它可能永远不会被校正。我想你可以给每个相邻点加上一半的差异在这种情况下…或者你可以将其写为一个带约束的优化问题。如果你使用任何平滑基础,你可以最小化控制点高度之和(或平方和),但平滑函数要比图像大。但是,在平滑之后进行最大滤波可能更快更容易。我喜欢:),然而,我认为在所有高点添加钟形曲线(
    n/(1+r^2)
    是我的选择)会更好。要使所有曲线加起来精确到正确的数量并不难(线性代数),只要没有更好的结果,找到每个局部区域的平均值和标准偏差,并使用
    x\u bar+-n*sigma
    。或者,最好通过固定平均值并只考虑其上方或下方的点来确定“上”和“下”标准偏差。这对于不平衡的区域(如恒星场)效果更好。虽然我不同意你的建议,但它为我指明了正确的方向。