擅长:python、mysql、java
<p>为了添加一些可靠的代码,我希望python中的<code>imfilter(A, B)</code>等价于简单的二维图像和过滤器(内核)。我发现下面给出的结果与MATLAB相同:</p>
<pre><code>import scipy.ndimage
import numpy as np
scipy.ndimage.correlate(A, B, mode='constant').transpose()
</code></pre>
<p>对于给定的问题,这将起作用:</p>
<pre><code>scipy.ndimage.correlate(A, B, mode='nearest').transpose()
</code></pre>
<p>注意,出于某种原因,MATLAB返回预期答案的转置。</p>
<p>有关更多选项,请参见文档<a href="https://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.ndimage.filters.correlate.html" rel="nofollow noreferrer">here</a>。</p>
<p><strong>编辑1:</strong></p>
<p>MATLAB提供了更多的选项,如<a href="https://in.mathworks.com/help/images/ref/imfilter.html#inputarg_options" rel="nofollow noreferrer">here</a>所述。具体来说,如果我们想使用<code>'conv'</code>选项,我们有MATLAB代码(例如):</p>
<pre><code>imfilter(x, f, 'replicate', 'conv')
</code></pre>
<p>这与python等价:</p>
<pre><code>scipy.ndimage.convolve(x, f, mode='nearest')
</code></pre>
<p>注意,MATLAB中的<code>'replicate'</code>与python中的SciPy中的<code>'nearest'</code>相同。</p>