---
title: 画像情報処理特論①
tags: 
author: [kanotown](https://www.docswell.com/user/kanotown)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LJ35XZ9Q75.jpg?width=480
description: 第１回　 Java開発環境の構築  画像処理の理論と汎用的なプログラム実装技術の習得を目指す「画像情報処理特論」。Javaを用いた画像情報処理技術に加え、前処理技術や後処理技術などについても学びます。また、Javaの文法をしっかり学び、アルゴリズムの知識を身に着け、プログラムが動くことに楽しみを見出せるようになることを目指します。
published: December 09, 23
canonical: https://www.docswell.com/s/kanotown/Z6YDJE-lecture1
---
# Page. 1

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

2018/04/12
画像情報処理特論
第１回
Java開発環境の構築
東京工科大学 助教
加納 徹


# Page. 2

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

自己紹介
氏名： 加納 徹 （Toru, KANO）
専門： 画像計測、医用画像処理、X線CT
プログラミング言語： C, Java
2


# Page. 3

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

研究テーマ
CT画像に含まれる各種アーチファクトの低減
処理前
3
処理後


# Page. 4

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

本講義の概要 ①
計測画像には 不要な情報 が多く含まれる
画像情報処理技術
前処理技術
濃度変換、フィルタ処理、ノイズ除去
後処理技術
特徴抽出・解析、定量評価
Java を用いて実装
4


# Page. 5

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

本講義の概要 ②
到達目標：
画像処理の理論と汎用的なプログラム実装技術の習得
ラーニングアウトカム重点項目：
「実学に基づく専門能力」「理論的な思考力」
履修に必要なもの：
ノートパソコン、数学・プログラミングの基礎知識
成績評価方法・基準：
演習50点、レポート課題50点、60点以上で合格
5


# Page. 6

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

本講義のもう一つのねらい
⚫ Javaの文法をしっかり学ぶ
⚫ アルゴリズムの知識を身に付ける
⚫ プログラムが動くのを楽しむ
⚫ ソフトウェア開発を身近に感じる
6
作る楽しさを知れば、学ぶのが楽しくなる！


# Page. 7

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

授業計画
第1回：ガイダンス、Java開発環境の構築
第2回：GUIアプリケーション開発、画像データの入出力
第3回：前処理(1)（濃度変換、モルフォロジー演算）
第4回：前処理(2)（平滑化、先鋭化）
第5回：画像のセグメンテーション
第6回：画像の特徴抽出・特徴解析
第7回：画像の定量評価（MSE、PSNR、CNR）
第8回：コンピュータ診断支援への展開、まとめ
7


# Page. 8

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

Java開発環境の構築


# Page. 9

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

Javaの開発環境
1. JDK (Java SE Development Kit)
⚫ Javaのプログラミングに必要な基本道具セット
2. NetBeans
⚫ Java公式の統合開発環境（IDE）
⚫ 優れたGUIエディタを搭載
3. Javaドキュメント
⚫ Javaの便利な取扱説明書
英語版のJavaドキュメントは最初から入っているみたい
9


# Page. 10

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

JDK/NetBeansのインストール①
1. http://www.oracle.com/technetwork/java
/javase/downloads/index.html にアクセス
2. 「NetBeans with JDK 8」をクリック
10


# Page. 11

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

JDK/NetBeansのインストール②
3. 「Accept License Agreement」をチェック
4. 各自の環境に合ったものをダウンロード
11


# Page. 12

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

JDK/NetBeansのインストール③
1. 「次へ」を押す
2. 「次へ」を押す
3. 「次へ」を押す
6. 「データ提供」のチェックを
外して「終了」を押す
5. しばらく待つ
4. 「更新の確認」のチェックを
外して「インストール」を押す


# Page. 13

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

Javaの特徴
⚫ 世界で最も使われているプログラミング言語
⚫ C言語から派生（文法が似てる）
⚫ GUIソフトウェアが作りやすい
13
CUI
GUI
Character User Interface
Graphical User Interface


# Page. 14

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

Javaの特徴
⚫ 世界で最も使われているプログラミング言語
⚫ C言語から派生（文法が似てる）
⚫ GUIソフトウェアが作りやすい
⚫ マルチプラットフォーム（どんなPCでも動く）
⚫ ライブラリが豊富（便利な道具がいっぱい）
⚫ オブジェクト指向（効率的で安全）
14
⚫ だいたい何でもできる


# Page. 15

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

Javaの使い道
⚫ 電気製品（携帯電話、電子レンジ）
⚫ 業務/研究アプリケーション
⚫ Webアプリケーション
⚫ スーパーコンピュータ
15
Java無しではもう生きていけない


# Page. 16

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

基本的な用語の説明
⚫ 変数
⚫ 数値や文字などを入れておく入れ物
⚫ メソッド
⚫ 一連の処理のまとまり
（C言語の関数に相当）
⚫ プログラムはmainメソッドから始まる
（C言語のmain関数に相当）
⚫ クラス
⚫ 変数やメソッドのまとまり
⚫ プログラムには必ずmainクラスが一つ存在する
⚫ プログラムはmainクラスのmainメソッドから始まる
16
全ての変数とメソッドは、必ずクラスに属している


# Page. 17

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

NetBeansの起動
1. アイコンをクリック
3. データ提供は「いいえ」を選択
4. NetBeansの起動！
2. 少し待つ
17


# Page. 18

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

Javaドキュメントのダウンロード
18
1.
http://www.oracle.com/technetwork/jp/java/java-sun1440465-ja.html にアクセス
2.
最新バージョンのファイルをダウンロード
3.
そのまま「C://Program Files/Java/」等の場所に入れる


# Page. 19

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

Javaドキュメントの組み込み
4. [ツール] ⇨ [Javaプラットフォーム] と進む
19


# Page. 20

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

Javaドキュメントの組み込み
5. [Javadoc] タブを選択し、
[ZIP/フォルダの追加] ボタンを押す
20


# Page. 21

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

Javaドキュメントの組み込み
6. [上へ移動] ボタンを押して、
一番上まで移動させる
21


# Page. 22

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

基本的なプログラミング


# Page. 23

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

新規プロジェクト
「Workshop1」
を作ろう
プロジェクトの作成
1. [新規プロジェクト...]
ボタンを押す
3. プロジェクト名（Workshop1）をつけて、
[終了] ボタンを押す
2. そのまま [次へ] ボタンを押す


# Page. 24

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

プロジェクトの作成
24


# Page. 25

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

フォント変更のすすめ
1. [ツール] ⇨ [オプション] と進む
25
2. [フォントと色] タブでフォントを変更する


# Page. 26

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

フォント変更のすすめ
3. [その他] タブの [出力] タブでフォントを変更する
26


# Page. 27

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

プロジェクト作成のすすめ
時々左上にこんなものを表示します
27
新規プロジェクト
「Workshop1」
を作ろう
既存プロジェクト
「Workshop1」
を使おう
新しく作ったほうが
手っ取り早いとき
あるものを使ったほうが
手っ取り早いとき
覚えたか？


# Page. 28

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

2.1 文字の出力


# Page. 29

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

既存プロジェクト
「Workshop1」
を使おう
29
Hello NetBeans!
「System.out.println(“Hello NetBeans!”);」と書いてみよう


# Page. 30

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

Hello NetBeans!
30
[Ctrl] + [スペース] で強制的に候補を出すこともできる


# Page. 31

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

Hello NetBeans!
31
出力ウィンドウにHello NetBeans! と表示されたら成功！


# Page. 32

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

2.2 変数


# Page. 33

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

データの入れ物「変数」
変数とは
[ データ型 ] [ 変数名 ] ;
の形で宣言される、数値や文字を入れておく入れ物です
データ型
種類
サイズ
扱える範囲
short
整数
２バイト
−32786~32767
int
整数
４バイト
−2147483648~2147483647
long
整数
８バイト
−9223372036854775808~9223372036854775807
float
浮動小数点数
４バイト
有効数字7桁 ±10−38 ~1038
double
浮動小数点数
８バイト
有効数字15桁 ±10−308 ~10308
char
文字定数
１バイト
Unicode文字（一文字）
String
文字列
不定
boolean
論理値
１バイト
大体どんだけでも
true, false


# Page. 34

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

データの入れ物「変数」
変数とは
[ データ型 ] [ 変数名 ] ;
の形で宣言される、数値や文字を入れておく入れ物です
データ型
34
種類
サイズ
扱える範囲
int
整数
４バイト
−2147483648~2147483647
double
浮動小数点数
８バイト
有効数字15桁 ±10−308 ~10308
String
文字列
不定
boolean
論理値
１バイト
大体どんだけでも
true, false
これくらいなら、簡単に覚えられそうだね


# Page. 35

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

既存プロジェクト
「Workshop1」
を使おう
変数の使い方
public static void main(String[] args) {
int a;
double b;
String s;
a = 42;
b = 3.1415926535;
s = &quot;Hello, NetBeans 8.1&quot;;
System.out.println(&quot;a の値は &quot; + a);
System.out.println(&quot;b の値は &quot; + b);
System.out.println(&quot;s の値は &quot; + s);
}
35
int a = 42; のように、宣言と代入は同時にできる


# Page. 36

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

新規プロジェクト
「Workshop2」
を作ろう
色々な計算
public static void main(String[] args) {
int a = 16, b = 4;
double x = 2.5, y = 8.3;
// 四則演算
System.out.println(&quot;a = &quot; + a + &quot;, b = &quot; + b);
System.out.println(&quot;a + b = &quot; + (a + b));
System.out.println(&quot;a - b = &quot; + (a - b));
System.out.println(&quot;a * b = &quot; + (a * b));
System.out.println(&quot;a / b = &quot; + (a / b));
System.out.println();
// Mathクラス
System.out.println(&quot;x = &quot; + x + &quot;, y = &quot; + y);
System.out.println(&quot;x ^ y = &quot; + Math.pow(x, y));
System.out.println(“sin(x - y) = &quot; + Math.sin(x - y));
System.out.println(&quot;log(x + y) = &quot; + Math.log(x + y));
}
36
「Math.」と打ち込んで候補を観察してみよう


# Page. 37

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

2.3 if文


# Page. 38

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

if文
if (評価式) { 処理 }
の形で記述され、評価式の結果が正しければ処理が実行されます
パターン1
if (評価式A) {
処理A ;
}
38
パターン2
評価式A
Yes
処理A
No
if (評価式A) {
処理A ;
} else {
処理B ;
}
評価式A
No
Yes
処理A
プログラムの分岐を作る超重要な文法！
処理B


# Page. 39

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

新規プロジェクト
「Workshop3」
を作ろう
if文
2つの値を比較するときは、比較演算子を用います
39
演算子
意味
==
等しい
!=
等しくない
&gt;
より大きい
&gt;=
以上
&lt;
より小さい
&lt;=
以下
public static void main(String[] args) {
int a = 0;
int b = 1;
if (a == b) {
System.out.println(“a と b は等しいよ&quot;);
} else {
System.out.println(“a と b は等しくないよ&quot;);
}
}


# Page. 40

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

2.4 for文


# Page. 41

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

新規プロジェクト
「Workshop4」
を作ろう
for文
for (初期化 ; 評価式 ; 次の一歩) { 処理 }
の形で記述され、次の流れで実行されます
1. 初期化を行う
初期化
2. 評価式が正しければ、処理を実行する（違えば終了）
3. 処理が終わったら、次の一歩を行う
4. 手順2に戻る
public static void main(String[] args) {
評価式
Yes
処理
int sum = 0;
for (int n = 1; n &lt;= 10; n++) {
sum = sum + n;
}
System.out.println(&quot;1から10までの和は, &quot; + sum);
}
次の一歩


# Page. 42

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

新規プロジェクト
「Workshop5」
を作ろう
練習問題
for文とif文を使い、九九の表を出力しなさい
一桁の数字の前には 0 を挿入し、綺麗に揃えなさい
実行例
ヒント
print()メソッドを使うと改行されない
for文の中にfor文を入れることができる
どこで改行を入れるかがミソ
数字が一桁かどうかはif文で判定する
できるかな？


# Page. 43

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

NetBeansの便利な機能
テキストエディタのどこかで
右クリックしてみよう
43


# Page. 44

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

お疲れ様でした
つづく


