@@ -11,7 +11,14 @@ Python で画像を表現してみましょう。
11
11
12
12
## 白黒の表現
13
13
14
- 大学がアルゴリズム入門の授業用に作った ` ita ` ライブラリを使えば、簡単に画像を表現できます。
14
+ 東京大学がアルゴリズム入門の授業用に作った ` ita ` ライブラリを使えば、簡単に画像を表現できます。(` ita ` って、Introduction to Algorithms の略なんですかね?)
15
+ ` ita ` ライブラリは、インストールして使う必要があります。ライブラリをインストールするには、先頭で ` !pip install ita ` と書けば良いのでした。
16
+
17
+ ` ita ` ライブラリで画像を扱う場合は、次のようなコードをはじめの方に書いておく必要があります。これに関しては、おまじないだと思ってください。Google Colaboratory 上でうまく表示するために、必要になっています。
18
+
19
+ ``` python
20
+ % matplotlib inline
21
+ ```
15
22
16
23
次のように、0 と 1 が格納された二次元配列を作って、それを ` ita ` ライブラリの ` image_show ` 関数に与えれば、白黒の画像を表現できます。0 が黒、1 が白となります。
17
24
@@ -21,7 +28,7 @@ Python で画像を表現してみましょう。
21
28
22
29
` ita ` ライブラリを使って次のような画像を作ってみましょう。
23
30
24
- ![ lattice patter ] ( lattice_pattern.drawio.svg )
31
+ ![ 市松模様 ] ( lattice_pattern.png )
25
32
26
33
<Answer >
27
34
<ViewSource path = " /image/lattice_pattern.ipynb" />
@@ -62,7 +69,7 @@ Python で画像を表現してみましょう。
62
69
63
70
次のような画像を作ってみましょう。
64
71
65
- ![ black to red ] ( black_to_red.drawio .png )
72
+ ![ 黒から赤へのグラデーション ] ( black_to_red.png )
66
73
67
74
<Answer >
68
75
<ViewSource path = " /image/black_to_red.ipynb" />
@@ -74,29 +81,54 @@ Python で画像を表現してみましょう。
74
81
75
82
左から右にかけて、黒色から緑色に色が変化するグラデーション画像を作ってみましょう。
76
83
77
- ![ black to green ] ( black_to_green.png )
84
+ ![ 黒から赤へのグラデーション ] ( black_to_green.png )
78
85
79
- < Answer >
86
+ ` 配列.append(要素) ` とすることで、配列の末尾に要素を追加できます。
80
87
81
- <ViewSource path = " /image/black_to_green .ipynb" />
88
+ <ViewSource path = " /image/append .ipynb" />
82
89
83
- ` 配列.append(要素) ` とすることで、配列の末尾に要素を追加できます。
90
+ < Hint >
84
91
85
- この問題ならそれぞれの行がすべて同じなので、 ` row ` を使いまわすこともできます 。
92
+ 左側が黒で右側に行くにつれてだんだん緑になるように、数値を少しずつ変化させていけば良さそうです 。
86
93
87
- <ViewSource path = " /image/black_to_green_another_solution.ipynb" />
94
+ 二次元配列の作り方としては、まず空の配列を作り、それに ` append ` を使って値を入れていき一次元配列を作ります。
95
+ さらに、これを空の配列に入れていけば、二次元配列になります。
96
+
97
+ </Hint >
98
+
99
+ <Answer >
100
+
101
+ <ViewSource path = " /image/black_to_green.ipynb" />
88
102
89
103
</Answer >
90
104
91
105
### 練習問題 2
92
106
93
- 左から右にかけて、白色から青色に色が変化するグラデーション画像を作ってみましょう。
107
+ 左から右にかけて、白色から青色に色が変化するグラデーション画像を作ってみましょう。これは、少し難しいです。分からなかったら、ヒントを見てください。
94
108
95
- ![ white to blue ] ( white_to_blue.png )
109
+ ![ 白から青へのグラデーション ] ( white_to_blue.png )
96
110
97
- <Answer >
111
+ <Hint >
98
112
99
- 加重平均をとると、うまくできます。
113
+ 次のように、加重平均をとると、うまくできます。
114
+
115
+ ![ 加重平均の説明] ( weighted_mean.drawio.svg )
116
+
117
+ $$
118
+ \left\{
119
+ \begin{align*}
120
+ R&=(1-t)R_1+tR_2 \\
121
+ G&=(1-t)G_1+tG_2 \\
122
+ B&=(1-t)B_1+tB_2
123
+ \end{align*}
124
+ \right.
125
+ $$
126
+
127
+ 右側の色と左の色を定義して、その加重平均をとるという流れになるかと思います。
128
+
129
+ </Hint >
130
+
131
+ <Answer >
100
132
101
133
<ViewSource path = " /image/white_to_blue.ipynb" />
102
134
@@ -106,11 +138,27 @@ Python で画像を表現してみましょう。
106
138
107
139
左上が白、右上が赤、左下が緑、右下が青となるようなグラデーション画像を作ってみましょう。
108
140
109
- ![ gradation ] ( gradation.png )
141
+ ![ グラデーション ] ( gradation.png )
110
142
111
- <Answer >
143
+ <Hint >
144
+
145
+ 次のように、二次元で加重平均をとると、うまくできます。
146
+
147
+ ![ 加重平均の説明] ( weighted_mean_2d.drawio.svg )
112
148
113
- 二次元で加重平均をとると、うまくできます。
149
+ $$
150
+ \left\{
151
+ \begin{align*}
152
+ R&=s\{(1-t)R_1+tR_2\}+(1-s)\{(1-t)R_3+tR_4\} \\
153
+ G&=s\{(1-t)G_1+tG_2\}+(1-s)\{(1-t)G_3+tG_4\} \\
154
+ B&=s\{(1-t)B_1+tB_2\}+(1-s)\{(1-t)B_3+tB_4\}
155
+ \end{align*}
156
+ \right.
157
+ $$
158
+
159
+ </Hint >
160
+
161
+ <Answer >
114
162
115
163
<ViewSource path = " /image/gradation.ipynb" />
116
164
0 commit comments