目次
- 本書について
- 本書の構成
- 本書で必要となる前提知識
- 基本用語の整理
- 目次
第0章 画像処理の技術を学ぶことについて ――道具を知る
0.01 グラフィックスツールやコンピュータのしくみを知る価値 ――データの品質向上,安定した作業環境,技法の習得
- [利点1]データのクオリティが上がる ――1ピクセルも無駄にしない
- [利点2]処理の負荷を下げ,安定した作業環境を得られる
- [利点3]技法を習得しやすくなる
第1章 基本のしくみ ――コンピュータで絵を描くために
1.01 2Dグラフィックスツール,いろいろ ――ツールの広がりと特徴
- (1)画像編集ツール ――おもに画像を編集するために作られたアプリケーション
- (2)ドローツールとDTPツール ――印刷物やデザインのためのアプリケーション
- (3)ペイントツール ――手書きのイラストや漫画を制作するアプリケーション
- イラストを描くツールを取り巻く状況
1.02 画像が表示されるしくみ ――パソコン,スマートフォンのグラフィックス機構
- 今どきの複雑なグラフィックス機構(グラフィックスアーキテクチャ)
- APIを介してグラフィックス処理は行われる
- グラフィックス処理の抽象化が行われる理由
- スマートフォン時代の画像解像度
1.03 ビット(bit)やバイト(byte) ――情報量を表す単位について
- ビット(bit)と2進数
- バイト(byte)
- ファイルサイズの目安
- Column データ転送量の単位
1.04 画像,ピクセル,不透明度とは何か ――画像はピクセルで構成されている
- ピクセル入門
- ARGBと不透明度 ――ピクセルと言えば「ARGB」
1.05 コンピュータ上で画像を表現する ――画像はメモリ上のピクセル情報
- 計算はメモリを介して行われる
- メモリを確保(使えるように)する方法
- 不要なメモリは解放する ――不要なメモリ領域はOSに返却する
1.06 メモリとHDD/SSDの関係 ――メモリは潤沢に搭載したほうが良い理由
- メインメモリの容量は少ない
- スワップアウトとスワップイン
1.07 ビットマップとベクターについて ――画像表現における2つの基本形式
- ビットマップ形式
- ベクター形式
- ベクター形式のメリット
- ラスタライズ
1.08 ペンタブレットの性能 ――選ぶときの比較ポイントとは?
- On荷重
- 座標の精度,座標の歪みの有無
- 筆圧レベル
- 盤面の材質,ペン先の材質
- WintabとTablet PC API,ドライバ
1.09 さまざまな画像フォーマット ――専用画像フォーマットの強み
- 画像フォーマットとファイルヘッダ
- 画像ファイルの中身
- 画像フォーマットの大まかな違い
- ツールごとの独自機能の保存 ――専用画像フォーマットを指定する
- BMP形式
- GIF形式
- PNG形式
- JPEG形式(JPG形式)
- PSD形式
- TIFF形式
- EPS形式
- SVG形式
- [重要]専用画像フォーマットについて
1.10 画像解像度とdpi ――「物理サイズ指定のないdpi値は飾りです」
- 画像解像度とdpi
- 物理サイズによる指定
- Column 手ぶれ補正のしくみ
1.11 Hello,World! ――ここだけは知っておきたいC言語プログラミング
- プログラムの基本
- 計算処理
- 関数
- 分岐処理
- 繰り返し処理
- 構造体
1.12 「バグった」「落ちた」時に何が起きているのか ――よくある問題と,その原因と対策
- [例1]メモリが足りない
- [例2]無限ループ
- [例3]ゼロ除算
- [例4]アクセス違反
- [例5]ディスク容量が足りない
第2章 図形描画 ――ピクセル徹底攻略
2.01 画像に点を打つ ――すべてはここから。点を打てれば,何でも表現できる
- メモリを一度に確保する,ライン単位に確保する
- メモリを確保すると,先頭のアドレスを取得できる
- 先頭アドレスからの相対位置を計算する
- 関数として定義する
2.02 矩形(長方形)を描画する ――一番シンプルな図形の描き方
- 矩形の描画方法を考える
- プログラムで考える矩形描画 ――for文の活躍
- [補足]横方向か,縦方向か ――キャッシュ機構をうまく使って高速処理
2.03 ピクセル形式と色深度 ――今,必要なのは,どのピクセル形式か
- RGBカラー(24 bit)
- RGBカラー(16 bit)
- ARGBカラー ――本書の標準的なピクセル形式
- インデックスカラーとは? ――パレットを参照するピクセル形式の総称
- 16 bitカラー(16 bit/チャンネル)
- グレースケール
- 8 bit(不透明度のみ)
- ハイダイナミックレンジとは? ――OpenEXR形式,Radiance形式
- マルチスペクトル
- YCbCr
2.04 半透明を表現する ――アルファブレンディングのしくみ
- 透明度と不透明度
- 合成色の求め方
- 半透明の計算式(RGBの場合)
2.05 画像と画像を合成する ――コラージュのように
- 画像合成の考え方
- カラーキー転送
- アルファ値を考慮して転送する
2.06 点をつなげて直線を描く ――斜めの線は難しい
- 座標指定
- 点を打つ,から考える
- 斜めの線を引く方法
2.07 アンチエイリアシング処理した直線を引く ――不透明度を駆使して滑らかな線を引く
- まずはプログラムから
- 先ほどのプログラムの問題と,その対策
- アンチエイリアシング処理を行う
2.08 円を描画する ――スーパーサンプリングで綺麗に描く
- 円を描く考え方
- 円を描くプログラム ――とりあえずガタガタでも良い
- スーパーサンプリングとサブピクセル ――綺麗な円へ
2.09 三角形の描画(1)(外積を使う方法) ――三角形の内側か,外側か
- 外積を作る
- 外積の方向を利用する
- Column 内積はあるの?
2.10 三角形の描画(2)(交点を求める方法) ――左右の辺の間を塗りつぶす
- 辺と辺の間を塗りつぶして三角形を描く
- 左右端の被覆率を求める
2.11 曲線を引く ――ベジェ曲線はどう描かれているのか
- 曲線の描き方
- [補足]パラメータとは?
- 直線の補間
- 曲線の補間(ベジェ曲線)
2.12 多角形を描画する ――これを描画できれば,何でも描画できる
- 曲線の内側を塗りつぶす→多角形を塗りつぶす
- スキャンするラインの交差をカウントする
2.13 グラデーションを描く ――指定した2点間を補間して色を塗る
- グラデーションの描画
- 円形グラデーションの計算方法
- 線形グラデーションの計算方法
第3章 画像処理 ――画質は良く,コンピュータの処理負荷は低く
3.01 画像を拡大/縮小する ――拡大も縮小も,考え方は変わらない
- 拡大/縮小は描画範囲から考える
- 元画像の座標を計算する
- 拡大/縮小のプログラム
- Column 画像拡大アルゴリズムwaifu2x
3.02 画像を綺麗に拡大/縮小する ――ピクセルの格子を厳密に考える
- 縮小処理でジャギジャギになる理由
- 平均色を取り入れる
- 被覆率を考慮して縮小する ――半端なピクセルは,半端な影響力がある
3.03 ミップマップという考え方 ――縮小処理の負荷を下げたい
- ミップマップ
- ミップマップの利点
- ミップマップの品質について ――問題点もある
- リップマップ
3.04 フィルタリング,サンプリング ――座標の小数部を使って品質アップ
- ピクセルのサンプリング
- フィルタリング
- ニアレストネイバー
- バイリニア補間,バイリニアフィルタリング
- バイキュービック補間
3.05 画像を回転させる ――画像処理のエッセンスが詰まっている
- 画像の回転転送
- 座標を回転させる
- タイル状に並べる
- 処理を最適化する
3.06 画像の変形 ――画像を変形して貼り付けたい
- 変形処理も,基本は多角形の描画と同じ
- 交点の座標を計算する
- 変形させると歪む問題
3.07 レベル補正とガンマ補正 ――画像処理では欠かせないカラーフィルタ
- レベル補正と,ヒストグラム
- レベル補正とは何か
- ルックアップテーブル ――事前に計算して,計算を簡略化
- ガンマ補正
3.08 モザイクフィルタ ――不透明度を考慮する重要性
- モザイク処理は簡単
- モザイク処理の実装
- 不透明度の扱い
- 不透明度を考慮して平均色を求める
- 不透明度を考慮したモザイク処理
- Column Qt(キュート)でCGプログラミング
3.09 ぼかしフィルタ ――周辺の平均色を求める,負荷の高い処理
- ぼかし処理,いろいろ ――モザイク処理との違い
- 周辺15×15pxをぼかしてみる
- X方向にぼかし,Y方向にぼかす
- ガウスぼかし ―― 偏りのある分布を利用する
- ガウス分布の特徴
- ガウスぼかしのコード
3.10 バケツ塗りつぶし ――閉じた領域を塗りつぶす
- 始点の指定 ――左右探索
- シードフィル
- シードが多くなり過ぎたら?
第4章 ペイントツールのしくみ ――画像データをどう持つか,画像データをどう表示するか
4.01 ペイントツールの大まかなしくみ ――レイヤー,キャンバス,描画と画面表示
- ペイントツール設計の3つのポイント
- レイヤーとキャンバスについて
- キャンバスの内容を表示する
- レイヤーへの図形描画から表示まで
4.02 画像は必要な分だけ確保されている
- 不透明な部分だけメモリを確保する
- ライン単位に画像を確保する方法 ――画像確保の単位(1)
- タイル単位で画像を確保する方法 ――画像確保の単位(2)
4.03 レイヤーの合成 ――レイヤーとは何か,キャンバスとは何か
- コンピュータで絵を描く手順
- レイヤーに分けて作業する
- キャンバスの背景色 ――透明な背景は,市松模様で表示される
- 合成モード(ブレンドモード)について
- 通常
- 乗算
- 加算/発光
- スクリーン
- オーバーレイ
- Column 合成モードの互換性
4.04 クリッピングとフォルダー ――下のレイヤーの不透明な部分だけに上のレイヤーを合成する
- クリッピング処理の実現
- レイヤーフォルダーと通過モード
4.05 計算を繰り返せば劣化する ――デジタル処理ならではの劣化
- 計算精度の問題 ――8 bit精度の限界
- サンプリングとフィルタリングの問題
4.06 RGB/CMYKとICCプロファイル ――異なるデバイス間で,色を再現する
- デバイス依存の色情報
- ICCプロファイルとは?
- ICCプロファイルを使って運用する
- 画素,表色系,色空間
- ICCプロファイルがあれば何でもOK? ――印刷所推奨のもので作業すべき
- Column データ圧縮 ――ファイルサイズを小さくしたい
- あとがき,著者について,[参考]本書内図版の制作環境データ