高斯模糊是一种用于平滑模糊图像的方法。它涉及创建一个矩阵,该矩阵将通过与图像像素卷积来使用。在这个挑战中,您的任务是构造用于高斯模糊的矩阵。为了构造一个尺寸为(2 r + 1×2 r + 1)的矩阵,您将使用输入r作为模糊半径,并使用输入σ作为标准偏差。该矩阵中的每个值都有一个(x,y)值,该值取决于其在每个方向上距中心的绝对距离,并将用于计算G(x,y),其中G是
例如,如果r = 2,我们想生成一个5 x 5的矩阵。首先,(x,y)值的矩阵为
(2, 2) (1, 2) (0, 2) (1, 2) (2, 2)
(2, 1) (1, 1) (0, 1) (1, 1) (2, 1)
(2, 0) (1, 0) (0, 0) (1, 0) (2, 0)
(2, 1) (1, 1) (0, 1) (1, 1) (2, 1)
(2, 2) (1, 2) (0, 2) (1, 2) (2, 2)
然后,让σ = 1.5并将G应用于每个(x,y)
0.0119552 0.0232856 0.0290802 0.0232856 0.0119552
0.0232856 0.0453542 0.0566406 0.0453542 0.0232856
0.0290802 0.0566406 0.0707355 0.0566406 0.0290802
0.0232856 0.0453542 0.0566406 0.0453542 0.0232856
0.0119552 0.0232856 0.0290802 0.0232856 0.0119552
通常在图像模糊中,可以通过将该矩阵中所有值的总和除以该矩阵来对其进行归一化。对于此挑战,这不是必需的,并且由公式计算得出的原始值应为输出。
规则
- 这是代码高尔夫球,因此最短的代码获胜。
- 输入r将是一个非负整数,而σ将是一个正实数。
- 输出必须表示一个矩阵。可以将其格式化为2d数组,代表2d数组的字符串或类似格式。
- 浮点数错误将不算在您身上。
测试用例
(r, σ) = (0, 0.25)
2.54648
(1, 7)
0.00318244 0.00321509 0.00318244
0.00321509 0.00324806 0.00321509
0.00318244 0.00321509 0.00318244
(3, 2.5)
0.00603332 0.00900065 0.0114421 0.012395 0.0114421 0.00900065 0.00603332
0.00900065 0.0134274 0.0170696 0.0184912 0.0170696 0.0134274 0.00900065
0.0114421 0.0170696 0.0216997 0.023507 0.0216997 0.0170696 0.0114421
0.012395 0.0184912 0.023507 0.0254648 0.023507 0.0184912 0.012395
0.0114421 0.0170696 0.0216997 0.023507 0.0216997 0.0170696 0.0114421
0.00900065 0.0134274 0.0170696 0.0184912 0.0170696 0.0134274 0.00900065
0.00603332 0.00900065 0.0114421 0.012395 0.0114421 0.00900065 0.00603332
(4, 3.33)
0.00339074 0.00464913 0.00582484 0.00666854 0.00697611 0.00666854 0.00582484 0.00464913 0.00339074
0.00464913 0.00637454 0.00798657 0.0091434 0.00956511 0.0091434 0.00798657 0.00637454 0.00464913
0.00582484 0.00798657 0.0100063 0.0114556 0.011984 0.0114556 0.0100063 0.00798657 0.00582484
0.00666854 0.0091434 0.0114556 0.013115 0.0137198 0.013115 0.0114556 0.0091434 0.00666854
0.00697611 0.00956511 0.011984 0.0137198 0.0143526 0.0137198 0.011984 0.00956511 0.00697611
0.00666854 0.0091434 0.0114556 0.013115 0.0137198 0.013115 0.0114556 0.0091434 0.00666854
0.00582484 0.00798657 0.0100063 0.0114556 0.011984 0.0114556 0.0100063 0.00798657 0.00582484
0.00464913 0.00637454 0.00798657 0.0091434 0.00956511 0.0091434 0.00798657 0.00637454 0.00464913
0.00339074 0.00464913 0.00582484 0.00666854 0.00697611 0.00666854 0.00582484 0.00464913 0.00339074
我们需要pi和e的精度如何?
—
xnor
@xnor好问题。如果您的语言允许,您可以假定这些值已经存储在变量或类似的变量中。如果不是,则可以使用到小数点后两位的值,使pi = 3.14和e = 2.72,您可以在其中将每个值都计为一个字节。当然,最终答案中的不正确之处将不会再计入您的视线。
—
英里
输出是否必须是十进制数字,还是可能是其中包含常数的精确数字?
—
JungHwan Min
@JungHwanMin确切的数字(例如Mathematica中的数字)很好。
—
英里
@miles我认为如果您只要求一定的精度(例如3个小数位),会更容易。
—
orlp