---
title: ImageMagick内部入門第十七回、Distortion #2 Shepards
tags:  #imagemagick  
author: [よや](https://convert.docswell.com/user/yoya)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4EZGLG12J3.jpg?width=480
description: ImageMagick内部入門第十七回、Distortion #2 Shepards by よや
published: May 01, 24
canonical: https://convert.docswell.com/s/yoya/KM1MLJ-imagemagick-17
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4EZGLG12J3.jpg)

ImageMagick 内部入門
第十七回 (Distortion〜空間歪曲#2)
Shepards
2024/4/26(金) “よや” &lt;yoya@awm.jp&gt;


# Page. 2

![Page Image](https://bcdn.docswell.com/page/Y76YWYW6EV.jpg)

内部入門シリーズ(1/2)
• (第一回) 全体構成
• (第二回) データ構造 〜 ImageList, ImageInfo
• (第三回) Magick API 〜 MagickWand / MagickCore
• (第四回) 画像形式処理 〜 Coders と Delegate
• (第五回) メタデータ 〜 XMP, Profile
• (第六回) システム設定 〜 policy.xml 等
• (第七回) 減色
〜 ColorCube
• (第八回) ビットdepth 〜 depth 変換
• (第九回) 2値化 〜 threshold
• (第十回) ディザリング 〜 組織 (拡散ディザは延期)
• (第十一回) ICCプロファイル 〜 RGB  CMYK 色空間
• (第十二回) 色フィルタ 〜 Colorize ColorMatrix


# Page. 3

![Page Image](https://bcdn.docswell.com/page/G75GMGM574.jpg)

内部入門シリーズ (2/2)
• (第十三回) 色modulate 〜 modulate (変調)
• (第十四回) WebP 画像
• (第十五回) 画像比較
〜 Compare
• (第十六回) 空間歪曲#1 〜 Distortion SRT, Affine, Perspective
• (第十七回) 空間歪曲#2 〜 Distortion Shepards
← 今回の話
• (第十八回) 空間置換#2 〜 Composite Displacement
• (第十九回) 空間歪曲#3 〜 Distortion Resize
• (第二十回) 空間歪曲#4 〜 Distortion ARC, Polar, Barrel
• (第二十一回) 畳み込み
〜畳み込み、 Convolve
• (第N回) 各画像処理
• モルフォロジー、OpenMP, distribute-pixel-cache


# Page. 4

![Page Image](https://bcdn.docswell.com/page/9J2Y9Y9GJR.jpg)

目次
• -distort Shepards の使い方
• Shepard&#039;s アルゴリズム
• ImageMagick Shepard&#039;s 実装
• Shepard の名前の由来
• Shepard&#039;s アルゴリズムができた経緯
• Displaceと似てる？


# Page. 5

![Page Image](https://bcdn.docswell.com/page/DEYG4G4GEM.jpg)

Distortion shepards
• Pin を動かして画像を歪めるような操作ができる
• 周りも引きずられるのでシームレス(つなぎ目無し)


# Page. 6

![Page Image](https://bcdn.docswell.com/page/VJNGYGY878.jpg)

Distortion shepards
• 指定した点を移動して、残りも Shepard&#039;s algorithm で補間
% magick wizard: -distort Shepards &quot;0,0,100,100,300,300,200,200&quot; wizard-shepards.jpg
0,0
100,100
300,300
200,200


# Page. 7

![Page Image](https://bcdn.docswell.com/page/YE9WPWPXE3.jpg)

Distortion shepards
• (ちなみに)一点だけだと、ただの全体移動
% magick wizard: -distort Shepards &quot;0,0,100,100&quot; wizard-shepards.jpg
0,0
100,100


# Page. 8

![Page Image](https://bcdn.docswell.com/page/GE8NDND97D.jpg)

Shepard&#039;s algorithm
• Inverse distance weighting とも呼ぶ
• https://en.wikipedia.org/wiki/Inverse_distance_weighting
• 制御点との距離の逆数で重み付けして補間する


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LELPMPMM7R.jpg)

Shepard&#039;s algorithm (p乗)
• 2乗 を p 乗に拡張
• p = 2 のバランスが良い
• p を大きくほど分離具合が強くなる


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4JM4Y4Y67W.jpg)

Shepard&#039;s algorithm (近傍参照)
• 制御点が増えると重たくなる
• 近傍のみ計算する方法もある


# Page. 11

![Page Image](https://bcdn.docswell.com/page/PJRW9W9N79.jpg)

ImageMagick の Shepard はどっち？
• pはいくつ？
• デフォルトは p = 2.0
• ImageMagick では -define shepards:power=(数値) で変更可
• -define shepards:power=2.5 のように実数型を指定する
• 近傍参照は？
• 近傍に絞らない。全制御点を毎度計算する
• つまりパラメータが増えると指数的に重たくなる


# Page. 12

![Page Image](https://bcdn.docswell.com/page/PEXPQPQ87X.jpg)

Distortion shepards 実装
• MagickCore/distort.c
• arguments が引数
• s.x, s.y は変換前(src)座標
• coeff[0]は power/2 の値


# Page. 13

![Page Image](https://bcdn.docswell.com/page/3EKD9D9LJD.jpg)

そもそも Shepards とは？
• https://dl.acm.org/doi/pdf/10.1145/800186.810616
• A two-dimensional interpolation function for irregularly-spaced data
• By DONALD SHEPARD – Harvard College
• 二次元画像の任意の歪みに対する良い補間方法
• ハーバード大学の研究生 &gt; Shepard 氏


# Page. 14

![Page Image](https://bcdn.docswell.com/page/L73RWRW6J5.jpg)

Shepard&#039;s algorithm のできた経緯
• 元々、ハーバード大学の GIS ソフト、SYMAP の副産物
• https://en.wikipedia.org/wiki/Inverse_distance_weighting
The motive force behind the Laboratory, Howard Fisher, conceived an improved computer
mapping program that he called SYMAP, which, from the start, Fisher wanted to improve
on the interpolation. He showed Harvard College freshmen his work on SYMAP, and many
of them participated in Laboratory events. One freshman, Donald Shepard, decided to
overhaul the interpolation in SYMAP, resulting in his famous article from 1968.
• https://en.wikipedia.org/wiki/Harvard_Laboratory_for_Comp
uter_Graphics_and_Spatial_Analysis
• GIS 情報を地図上にマッピングする
• 地球の歪みがあるので座標変換が複雑


# Page. 15

![Page Image](https://bcdn.docswell.com/page/87DYKYKM7G.jpg)

Displace と似てる？
• 任意の点を移動という点で Compose Displace を連想する
• が、Displace は全ピクセルの座標変換の結果を全て明示的に指
定するので、Shepard&#039;s algorithmのような処理はなく全く別も
の
• 処理は全く似てない (主観)


# Page. 16

![Page Image](https://bcdn.docswell.com/page/VJP6K6KQE8.jpg)

参考URL
• https://www.imagemagick.org/Usage/distorts/#freeform_dis
torts


# Page. 17

![Page Image](https://bcdn.docswell.com/page/2EV3V3VP7Q.jpg)

まとめ (目次と同じ)
• -distort Shepards の使い方
• Shepard&#039;s アルゴリズム
• ImageMagick Shepard&#039;s 実装
• Shepard の名前の由来
• Shepard&#039;s アルゴリズムができた経緯
• Displaceと似てる？


# Page. 18

![Page Image](https://bcdn.docswell.com/page/57G3L3LQJL.jpg)

おしまい


