计算原始图像和模糊图像之间的点扩散函数
我们基于系统是线性空间不变系统的假设构造算子。模糊图像表示为,输入表示为。
由于卷积是可交换的,我们可以写成
所以我们可以使用矩阵和有两个相等的表示,对应于涉及和的积分运算,即
因为我们确切地知道和,所以我们想知道。因此,我们的任务是根据我们对的知识和成像系统的属性来构建算子
在这里,我使用旧代码来构建矩阵。如果我忘记了一些细节,请原谅我,但是书中很好地解释了处理具有某些结构的卷积矩阵的细节:
去模糊图像:矩阵、光谱和过滤
作者:Per Christian Hansen、James G. Nagy 和 Dianne P. O'Leary
无论哪种方式,我们构造矩阵基于以下代码。我认为这对应于周期性边界条件,但要持保留态度。
X = toeplitz(x,circshift(flipud(x),1));
然后我们求解最优通过例如目标函数的梯度下降:
因此,我们知道这种情况下的滤波器系数。相反,基于计算的系数我们可以构造矩阵通过与上述代码相同的公式。然后,给定和运营商,我们想计算最优的通过求解目标函数:
由于原来有锋利的边缘,使用正常的梯度下降来求解最优会比较顺利。由于我们知道图像的大部分是零,我们为每次迭代选择一个额外的投影步骤到缩放的标准单纯形上(即非负迭代软阈值)。结果如下所示。
注意:绘制滤波器系数作为一个 PSF,我们需要通过(s 是图像的大小)稍微改变它们:
hs = reshape(circshift(h(:),(numel(h)+s(1))/2),s)
此外,我只取了您的图像的某种颜色类型并减去背景,使背景设置为零。
假设滤波器是线性 FIR 滤波器并且您知道(或选择)滤波器的大小,这可以通过以下方式解决。
我们有一个已知图像 f 和一个输出图像 g,我们想确定什么滤波器 h 采用 f->g。
具体而言,我们假设过滤器是 5x5 过滤器,尽管该方法适用于任何其他尺寸。然后问题是确定 25 个滤波器系数。因此,输出图像中的每个点都是 25 个输入点(已知)的线性组合。因此,我们有 25 个未知数和许多方程,这些方程等于 g 中的像素数(应该与 f 相同)。边缘附近的像素将存在不确定性,您必须决定使用哪种算法(假设边缘之外的零,复制像素等)。
如果图像足够大,这通常是可以解决的(在没有足够独立数据的情况下显然存在退化的情况,例如具有恒定值的图像)。
更具体地说,您可以建立一个线性方程来求解
其中未知数是滤波器 h 中的 25 个值,是输出图像中排列在一维向量中的像素值,并且具有按行排列的输入输入图像的值。每行有 25 个像素,对应于用于输出该行的过滤器的输入。也就是说,第 i行有 25 个像素,用于计算第 i个输出像素(在向量 b 中)。
然后你用MATLAB 或 octave 中
您可以通过将与进行比较并可能以图像格式显示来了解您的过滤器的工作准确度。


