【问题标题】:How to perform a 2D deconvolution in Scilab如何在 Scilab 中执行 2D 反卷积
【发布时间】:2017-04-16 17:17:24
【问题描述】:

我想在 Scilab 中对图像执行 2D 反卷积。我似乎找不到它的内置功能。谁能指出我正确的方向?

【问题讨论】:

  • 您想通过 2D 反卷积实现什么目标? (例如模板匹配?)您使用什么工具箱? IPD,SIVP?你检查convconvolconvol2d函数了吗?
  • 我需要执行反卷积以从模糊和近似的原始图像中获取模糊内核。我正在使用 SIVP。我似乎在 scilab 5.5 atom 包管理器中找不到 IPD。
  • 我将 IPD 与 5.4.1 和 5.5.1 一起使用,但它不适用于 5.5.2(请注意:此列表并不详尽,只是我现在在我的机器上安装的版本)。我建议尝试 5.4.1。

标签: scilab deconvolution


【解决方案1】:

This 帖子虽然使用 Matlab,但提供了使用 2D 傅里叶变换进行反卷积的示例。

总体思路如下。零扩展两个图像——在 m x m 和 n x n 图像的情况下,两者都应该用零填充到 m+n-1 x m+n-1。 对每个零扩展图像进行二维傅里叶变换,按元素进行除法,然后进行二维傅里叶逆变换。

需要补零以防止循环卷积。

对于 2D 正向变换,可以使用 fft2(m) 或 fftw(m,-1),其中 m 是图像矩阵,而对于逆变换(在 Matlab 中称为 ifft2),可以使用 fftw(M, 1).

【讨论】:

  • 我试过这个,但它不适用于嘈杂的图像。我也意识到我需要在我的项目中使用 Richardson Lucy 反卷积。
  • 虽然我没有使用 RL 算法的经验,但在 matlab 中为它编写了一个函数,看起来也适用于 scilab,这里:stackoverflow.com/questions/9854312/…
【解决方案2】:

用于 Scilab 中的反卷积 代码是:-

y=[4,2,7,11,18,19,10,11,12,9,8]
h=[2,3,1,4,5,2,1]
subplot(3,1,2)
plot2d3(h)
z=%z
a=4*z^10+2*z^9+7*z^8+11*z^7+18*z^6+19*z^5+10*z^4+11*z^3+12*z^2+9*z^1+8
b=2*z^10+3*z^9+1*z^8+4*z^7+5*z^6+2*z^5+1*z^4
x=ldiv(a,b,7)
x=x'
N1=length(x)
n1=0:N1-1
subplot(3,1,3)
plot2d3(n1,x)

Denconvolution

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多