17

Pythonでmatplotlibを使用imshow()して小さな行列を表すと、ピクセル間を平滑化する場合に何らかの種類が生成されます。またはを使用するときにMatlabでこれを使用する方法はありますimshowimagesc

たとえば、matplotlibを使用すると、これは単位行列の出力になりますimshow(eye(3))ここに画像の説明を入力してください

matlabにいる間、 imagesc(eye(3))

ここに画像の説明を入力してください

私が考えることができる解決策は、いくつかのフィルターを使用して外挿して滑らかにすることですが、それは単一のピクセルレベルには関係ありません。myaaexport_figも試しましたが、満足のいくものではありません。Myaaは、適用後にすべてのGUIを使用できるようにしているため、ズームインまたはズームアウトできません。export_figを使用すると、図をファイルに保存してから、そのファイルを操作するのも面倒です。それで、MATLABのFigureエンジン(Javaまたはそうでないもの)に、Figure GUIの優れたユーザビリティを維持しながら、このスムージングを実行するように指示する方法はありますか?

4

1 に答える 1

45

これは、「バイリニア」に設定されているデフォルトの補間によるものです。「なし」がより直感的なデフォルトになると思います。デフォルトの補間方法 (interpolation=None など) は、次のように変更できます。

mpl.rcParams['image.interpolation'] = 'none'

Matplotlib のカスタマイズの詳細については、Web サイトを参照してください。

以下のコードは、すべての補間方法の概要を示しています。

methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', \
           'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos']

grid = np.random.rand(4,4)

fig, ax = plt.subplots(3,6,figsize=(12,6), subplot_kw={'xticks': [], 'yticks': []})
fig.subplots_adjust(hspace=0.3, wspace=0.05)

ax = ax.ravel()

for n, interp in enumerate(methods):
    ax[n].imshow(grid, interpolation=interp)
    ax[n].set_title(interp)

ここに画像の説明を入力

于 2013-02-06T11:37:27.177 に答える