提问人:Nirajan 提问时间:4/25/2022 更新时间:4/26/2022 访问量:225
如果我们在噪声和图像之间做点积,是否有可能反转图像?
Is it possible to reverse an image if we did a dot product between noise and the image?
问:
我做了图像的点积,并带有噪点。
将 numpy 导入为 np
np.random.seed(100) x = grayscale.shape[0] y = grayscale.shape[1]
noise = np.random.rand(x,y) noise_dot_img = grayscale.dot(noise) plt.imshow(noise_dot_img, cmap = “gray”)
答:
0赞
Stanley
4/25/2022
#1
对于可怕的格式,我们深表歉意,但堆栈溢出不支持乳胶。
两个向量之间的点积(如果它们是 NxM 矩阵,您可以删除转置,因为矩阵之间的点积定义为 numpy 中的矩阵乘法)A 和 B 是 A 点 B = AB^T
如果 A 是原始图像,B 是噪声矩阵,则可以通过将最终图像矩阵乘以 B^T 的倒数(如果有的话)来反转它,因为矩阵乘法是关联的。
因此,要得到原始矩阵 A = A 点 B * (B^T)^-1
编辑:为了清楚起见,这里有一些示例代码:
import numpy as np
A = np.random.randint(10, size=(3, 3))
B = np.random.randint(10, size=(3, 3))
image_with_noise = A.dot(B)
noise_inverse = np.linalg.inv(B)
recreated_image = np.matmul(image_with_noise, noise_inverse)
0赞
Nikolas
4/26/2022
#2
我认为你应该分享一些关于你在这里想要实现的目标的更多信息。
无论如何,在这个特定示例中,您实际上可以通过反转噪声矩阵并乘以噪声图像来恢复图像:
inv = np.linalg.inv(noise)
restored_img = noise_dot_img@inv
但是,有很多事情需要解释。总的来说,这并不是我们解决这个问题的真正方式,因为我们几乎从来不知道“噪声”矩阵。这就是信号处理存在的原因。此外,在此示例中,您正在处理一个方形图像。否则,我们将无法找到逆函数(我们将不得不使用伪逆函数)。也就是说,在决定反转矩阵之前,应该始终小心。
评论