簡単な画像処理

目的

ここまでで,画像を入出力する方法を学んだ.ここでは,画像に簡単な処理を行う方法を学ぶ.

説明

指定した値だけ画素値を変更する

画像を読み込み,指定した値だけ輝度値を変更してみよう.

21行目で画像を読み込み,22行目で画素値を40増やしている.23行目で画素値が255を越える場合には255に,24行目で画素値が0より小さくなる場合には0にし,25行目で符号なし8bit整数型にしている.実行すると以下のように表示され,入力画像より出力画像が明るくなっていることが確認できる.

入力画像
出力画像

画素値を反転する

次に,画像を読み込み,画素値を反転してみよう.

19行目で画像を読み込み,20行目で255から入力画像の画素値を引くことで,画素値を反転している.実行すると以下のように表示され,画素値が反転していることがわかる.

画像を左右上下に反転する

画像を読み込み,画像を左右上下に反転してみよう.

20行目で画像を読み込み,21,22行目で,引数で「horizontal」を指定した場合に画像を左右に反転するようにしている.また,23,24行目で,引数で「vertical」を指定した場合に画像を上下に反転するようにし,25,26行目で,引数で「both」を指定した場合に画像を上下左右に反転するようにしている.実行すると以下のように表示され,画像が左右に反転していることがわかる.

画像の一部を抜き出す

画像を読み込み,画像の一部を抜き出してみよう.

24行目で,画像から引数で指定した領域を抜き出している.デフォルトではx座標が210から230,y座標が225から255の領域を抜き出している.実行すると以下のように表示され,指定した領域の画像が抜き出されていることがわかる.

画像の一部を塗りつぶす

画像を読み込み,画像の一部を塗りつぶしてみよう.

27行目で入力画像を出力画像にコピーし,28行目で指定した領域を指定した色で塗りつぶしている.デフォルトでは,x座標が100から220,y座標が80から140の領域を青で塗りつぶしている.実行すると以下のように表示され,指定した領域が指定した色で塗りつぶされていることがわかる.

画像を分割する

画像を読み込み,分割してみよう.

23行目で画像を縦方向に指定した数に分割し,24行目から26行目で横方向に指定した数に分割している.デフォルトでは横方向に3,縦方向に2分割している.実行すると指定した数に分割された画像が表示される.

画像を結合する

画像を2枚読み込み,結合してみよう.

28,29行目で画像を2枚読み込み,30,31行目で引数で「horizontal」が指定されている場合横方向に,32,33行目で引数で「vertical」が指定されている場合縦方向に画像を結合している.実行すると以下のように表示され,2枚の画像が横方向に結合されていることがわかる.

課題

課題0

画像を読み込み,画素値を60だけ増加させよ.

課題1

画像を読み込み,画素値を50だけ減少させよ.

課題2

画像を読み込み,画素値を反転せよ.

課題3

画像を読み込み,画像を上下に反転せよ.

課題4

画像を読み込み,画像を上下左右に反転せよ.

課題5

画像を読み込み,画像の一部を抜き出せ.

課題6

画像を読み込み,画像の一部を塗りつぶせ.

課題7

画像を読み込み,画像を横方向に4・縦方向に3分割せよ.

課題8

画像を2枚読み込み,横方向に結合せよ.

課題9

画像を2枚読み込み,縦方向に結合せよ.