2017-04-16 77 views
0

我想对Scilab中的图像执行2D解卷积。我似乎无法找到它的内置功能。任何人都可以将我指向正确的方向吗?如何在Scilab中执行解卷积

谢谢。

+0

你想用2D去卷积实现什么? (例如模板匹配?)您使用了什么工具箱? IPD,SIVP?你检查过'conv','convol','convol2d'功能吗? – Attila

+0

我需要执行反卷积以从模糊和近似原始图像中获取模糊内核。我正在使用SIVP。我似乎无法在scilab 5.5原子封装管理器中找到IPD。 – xSooDx

+1

我使用5.4.1和5.5.1的IPD,但它不适用于5.5.2(请注意:此列表并非详尽无遗,只是我现在在我的机器上安装的版本)。我建议尝试5.4.1。 – Attila

回答

2

This尽管使用了Matlab,但它提供了一个使用二维傅里叶变换去卷积的例子。

总体思路如下。零扩展两个图像 - 在m×m和n×n个图像的情况下,两者都应该填零到m + n-1×m + n-1。 对每个零扩展图像进行二维傅里叶变换,按照元素方式进行分割,然后进行二维傅立叶逆变换。

零填充是防止循环卷积所必需的。可以使用fft2(m)或fftw(m,-1),其中m是图像矩阵,而对于逆变换(在Matlab中称为ifft2),可以使用fftw(M,-1) ,1)。

+0

我曾尝试过这种方式,但对于嘈杂的图像效果不佳。另外我意识到我需要为我的项目使用Richardson Lucy解卷积。 – xSooDx

+0

尽管我没有使用RL算法的经验,但在matlab中有一个为它编写的函数,看起来也适用于scilab,在这里:http://stackoverflow.com/questions/9854312/how-does -richardson-露算法功代码示例 – rob