
177
7.2 optimize を使った画像のレジストレーション
shifted = ndi.shift(astronaut, (0, shift))
shifted_pyramid = gaussian_pyramid(shifted, levels=nlevels)
for row, image in enumerate(shifted_pyramid):
costs[row, col] = mse(astronaut_pyramid[row], image)
fig, ax = plt.subplots()
for level, cost in enumerate(costs):
ax.plot(shifts, cost, label='Level %d' % (nlevels - level))
ax.legend(loc='lower right', frameon=True, framealpha=0.9)
ax.set_xlabel('Shift')
ax.set_ylabel('MSE');
ご覧のように、ピラミッドの最上レベルでは、約-
325
ピクセルの位置にあるでこぼこが消えて
います。したがって、このレベルでおおよその位置を合わせたのち、下位レベルに降りていって位
置合わせを改良することができます(図
7-6
を参照)。■
7.2
optimize
を使った画像のレジストレーション
では、この処理を自動化して、回転、行次元の平行移動、列次元の平行移動の
3
つのパラメー
タを使った「本物の」位置合わせを試してみましょう。これは、どんな変形(拡大縮小、歪みなど ...