プログラミング演習Ⅱ 課題4第3週 画像処理 (1) ビット演算子.

Slides:



Advertisements
Similar presentations
プログラミング演習Ⅱ 課題 4 第 2 週 画像ファイル (ppm) の読み書き 画像データ用のメモリ確保・解放 1.
Advertisements

平成 27 年 10 月 21 日. 【応用課題 2-1 】 次のビット列は、ある 10 進数を 8 ビット固定小数点表示で表した時の ものです。ただし、小数点の位置は 3 ビット目と 4 ビット目の間としてお り、負数は2の補数で表しています。このとき、元の 10 進数を求めてく ださい。
1 全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える 処理後のデータを出力ファイルに書き出す 画像データ用に確保したメモリを解放.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
Verilog HDL 12月21日(月).
基礎プログラミングおよび演習 第9回
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
プログラミング論 II 電卓,逆ポーランド記法電卓
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
情報処理Ⅱ 第4回 2007年10月29日(月).
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路
行列による画像処理 デジタル表現論 担当者:劉 雪峰 2017年6月1日.
iioLoadFile()とiioMallocImageBuffer()の補足
Cプログラミング演習 第7回 メモリ内でのデータの配置.
iioLoadFile()とiioMallocImageBuffer()の補足
iioLoadFile()とiioMallocImageBuffer()の補足
画像処理プログラムの説明.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
デジタル画像とC言語.
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
計算機構成 第2回 ALUと組み合わせ回路の記述
4点FFT設計 ファイヤー和田 知久 琉球大学・工学部・情報工学科 教授
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
明星大学 情報学科 2012年度 後期   情報技術Ⅱ   第8回
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
ディジタル回路 9. 演算回路 五島 正裕.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
11: 動的メモリ確保 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
コンピュータアーキテクチャ 第 4 回.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 4 回.
9. 演算回路 五島 正裕.
情報処理Ⅱ 2006年11月24日(金).
コンピュータアーキテクチャ 第 3 回.
11: 動的メモリ確保 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
情報処理Ⅱ 2005年10月28日(金).
プログラミング演習Ⅱ 課題4第4週 画像処理 (2) 応用.
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
11: 動的メモリ確保 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
/24 というアドレスブロックにおいて ネットワーク長 28 のアドレスはいくつ取るこ とができるか
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
情報処理Ⅱ 第2回 2004年10月12日(火).
情報処理Ⅱ 2005年11月25日(金).
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
左右反転と180度回転 [0][xsize – 1] [0][0] → i ↓ j [ysize – 1][xsize – 1]
情報処理Ⅱ 小テスト 2005年2月1日(火).
JavaScript    プログラミング入門 2-3 式と演算子 2006/10/12 神津 健太.
2009年8月18日,新潟大学 「情報」と「ものづくり」 の実践教育3 下保敏和,佐藤亮一.
情報処理Ⅱ 2006年10月27日(金).
高度プログラミング演習 (10).
Presentation transcript:

プログラミング演習Ⅱ 課題4第3週 画像処理 (1) ビット演算子

全体の流れ 画像ファイルを開き,画像データをメモリ上にロード(済) ロードした画像データに処理を加える (第3・4週) 処理後のデータを出力ファイルに書き出す (済) 画像データ用に確保したメモリを解放 (済)

画像バッファの様子(再確認) ysize個 → i ↓ j pImage->pBuffer[0][0] xsize 256 ysize 192 pImage->pBuffer[0][0] PIXEL構造体, {R, G, B} level 255 pBuffer → i ↓ j 位置[0][0]のRにアクセス: pImage->pBuffer[0][0].r ysize個 pImage->pBuffer[j] xsize個

iioMallocImageBuffer 画像の90度回転 ipRotateImage [0][ysize – 1] [0][0] → i ↓ j xsize個 ysize個 xsize個 ysize個 関数内で作業用の画像バッファメモリを確保し, 順に画素を埋めていけばよい. iioMallocImageBuffer iioFreeImageBuffer

ビットマスクを用いた 画像の減色処理 ipBitMask 原画像 RGB各色 0~255 2563 = 16,777,216 色 減色画像の例 0, 16, 32,...,240 163 = 4096色 下位4bitは全て0

ビット演算 (1) unsigned char A = 113; /* 0111 0001 */ unsigned char B = 15; /* 0000 1111 */ unsigned char D; D = A & B; /* AND: 0000 0001 */ D = A | B; /* OR: 0111 1111 */ D = A >> 3; /* SHIFT: 0000 1110 */ 他にもXOR(^), 左シフト(<<),NOT(~)がある

ビット演算 (2) unsigned char A = 113; /* 0111 0001 */ char C = -64; /* 1100 0000 */ char D; D = A >> 3; /* 0000 1110, 14 */ D = C >> 3; /* 1111 1000, -8 */ 符号なし変数のシフト: 隙間は0で埋められる (論理シフト) 符号あり変数のシフト: 隙間は最上位ビットで埋められる* (算術シフト)  *注意: 符号あり変数のシフト結果は環境によって異なることがあるため,        負の数のビットシフトは極力避けるようにする

練習問題 (1) 式 結果 2進 16進 10進 D = A & B A: 0000 0011 (0x03, 3) 変数の型と初期値 unsigned char A = 3; unsigned char B = 33; unsigned char D = 0; 式 結果     2進    16進 10進 D = A & B A: 0000 0011   (0x03, 3) B: 0010 0001 (0x21, 33) D: D = A | B A: B:

練習問題 (2) 式 結果 D = A ^ B A: B: D: D = B << 2 D = B >> 3

練習問題 (3) 式 結果 D = ~A A: D: B >>= 3 実行前 B: 実行後

画素のビットマスク ipBitMask 各画素値の下位6ビットを0にしたい場合 pImage->pBuffer[j][i].r &= 0xC0; pImage->pBuffer[j][i].g &= 0xC0; pImage->pBuffer[j][i].b &= 0xC0; 16進: C0 2進:1100 0000 例: r = 100 rの2進表現 1 0xC0の2進表現 r & 0xC0 下位6ビットが0のマスク(0xC0)と&を取ることで,画素値の 階調を制限している (結果,画素値は0, 64, 128, 192のいずれかになる)

第3週目の目標 ビット演算の練習問題を解く コマンドライン引数の最初のmodeによって画像処理の種類を指定できるようにせよ.  > ex4_2.exe [mode] [inputfile] [outputfile] modeが0の場合: 画像を90度回転 modeが1の場合: 画像の各画素の下位”4”ビットを0でマスク(6ではないので注意) 上記以外: 画像処理を行わない(ファイルのコピー)