ここでは,matplotlib の様々なオプションを指定して画像を表示させるための show 関数と,画像の一部を拡大表示してグレースケールについては画素ごとに色情報も表示できる show_zoom_with_color 関数を定義します.まず,後で利用するものも含めて必要なライブラリをインポートします.
import numpy as np
from skimage import color
from skimage import filters
from skimage import restoration
from skimage import util
import matplotlib.pyplot as plt
# 次の2行は高解像度ディスプレイ対応
from IPython.display import set_matplotlib_formats
# from matplotlib_inline.backend_inline import set_matplotlib_formats # バージョンによってはこちらを有効に
set_matplotlib_formats('retina')
  次に,show 関数を定義します.
def show(img,
         cmap=plt.cm.gray,
         file_name = 'output.png',
         figsize=(6,6),
         set_axis_off= False,
         save_png=True,
         dpi=300):
    fig, ax = plt.subplots(1, 1, figsize=figsize, constrained_layout=True)
    ax.imshow(img, cmap=cmap)
    if set_axis_off:
        ax.set_axis_off()
    if save_png:
        plt.savefig(file_name, dpi=dpi, facecolor='white')
    plt.show()
  グレースケールの画像を表示して,色情報を画素に出力する show_zoom_with_color 関数も定義しておきます.
def show_zoom_with_color(
          img,
          cmap=plt.cm.gray,
          xlim=(0,10),
          ylim=(10, 0),
          fontsize=12,
          figsize=(6,6),
          show_color=True,
          file_name='output.png',
          save_png=True,
          set_axis_off=False,
          dpi=300,
      ):
    fig, ax = plt.subplots(1, 1, figsize=figsize, constrained_layout=True)
    ax.imshow(img, cmap=cmap)
    ax.set_xlim(xlim)
    ax.set_ylim(ylim)
    if show_color:
        for y in range(int(ylim[1]+1), int(ylim[0]+1)):
            for x in range(int(xlim[0]+1), int(xlim[1]+1)):
                gray = int(img[y,x]*255+0.5) # 四捨五入
                if gray > 127:
                    color = 'black'
                else:
                    color = 'white'
                ax.text(x, y, gray,
                    linespacing=1, size=fontsize,
                    verticalalignment='center',
                    horizontalalignment='center',
                    color=color)
    if set_axis_off:
        ax.set_axis_off()
    if save_png:
        plt.savefig(file_name, dpi=dpi, facecolor='white')
    plt.show()
  関数 show にオプショナル引数を指定しない場合は,画面に表示されるだけでなく,カレントディレクトリに output.png というファイル名で保存されます.そのときに保存されるファイルの解像度が 300dpi になります.
ink_img = plt.imread('ink.png')
show(ink_img)
  書き出されるファイル名を指定するには file_name 引数を利用します.
ink_img = plt.imread('ink.png')
show(ink_img, file_name='output_ink.png')
  ファイルに書き出す必要がない場合は save_png 引数に False を指定します.
ink_img = plt.imread('ink.png')
show(ink_img, save_png=False)
  軸メモリを消去するには set_asis_off 引数に True を指定します.
ink_img = plt.imread('ink.png')
show(ink_img, set_axis_off=True)
  ファイルに書き出す際のデフォルトの解像度は 300dpi です.これを変更するには dpi 引数を指定します.例えば 50dpi で書き出した場合は次のようになります.上の結果と比較すると,軸メモリの値の表示が荒くなっていることが確認できるはずです.
ink_img = plt.imread('ink.png')
show(ink_img, dpi=50)