我有一个 Java 代码,它采用一个卷积矩阵(只是一个 2D double[][]
)并将其应用于图像。我正在尝试找出如何创建一个矩阵,在给定角度(以度为单位)和模糊大小的情况下给出运动模糊。
幅度 = 1 的模糊的示例矩阵(中间像素在每个方向上被一个像素模糊),45 度运动模糊为:
0 0 1/3
0 1/3 0
1/3 0 0
幅度决定了矩阵的大小(大小 = 2*幅度 + 1),单行单元格在运动方向上不为零。
我遇到的麻烦是计算出在给定角度的矩阵中哪些单元格具有非零值所需的数学/代码。
伪(或实际)代码将非常有帮助!
最佳答案
对于运动模糊,非零元素显示全部位于一条线上。这就是你的例子有效的原因。 [1/n 1/n (ntimes)... 1/n] 会在水平方向上模糊,而转置会在垂直方向上模糊。对于任意角度,只需填写最接近所需角度的直线的非零元素即可。
编辑。
例如,您可能会尝试最小化像素索引的某些函数,以确定该像素是否应为非零。 |(i - 3*j)| <小数,会沿着斜率 3 的线找到像素。
关于java - 给定角度和大小的运动模糊卷积矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579729/