- 1.MATLABエディターウィンドウを使用した画像処理
- 2. MATLABGUIを使用した画像処理
- 画像処理用のMATLABグラフィカルユーザーインターフェイスの作成
- 画像処理用のMATLABGUIコード
- 画像処理用のMATLABGUIコードを実行する
カメラをあるオブジェクトに向けると、カメラがそのオブジェクトの名前を教えてくれると想像してみてください。そうです、Androidスマートフォンの Googleレンズ は画像処理を使用して同じことをしています。これにより、コンピューターは物事を検出して認識し、それに応じてアクションを実行する ビジョン を得ることができます。画像処理には、顔の検出と認識、親指の印象、拡張現実、OCR、バーコードスキャンなどの多くのアプリケーションがあります。画像処理に利用できるソフトウェアはたくさんありますが、その中でもMATLABが最初から最適です。
MATLABは多くの高度な画像処理操作を実行できますが、MATLABでの画像処理の開始については、RGBからグレーへの変換、画像の回転、バイナリ変換などの基本的な操作について説明します。明快さ、このチュートリアルで説明されている関数を使用したフィルタリング。
先に進む前に、MATLABを初めて使用する場合は、以前のMATLABチュートリアルをチェックして、よりわかりやすく説明することができます。
- MATLAB入門:簡単な紹介
- ArduinoとMATLABのインターフェース-LEDの点滅
- MATLABとArduinoを使用したDCモーター制御
- MATLABとArduinoを使用したステッピングモーター制御
- MATLABを使用してリアルタイムの温度グラフをプロットする方法
MATLABでは、いつものように、画像処理アルゴリズムを実行する方法は2つあります。1つはエディター/コマンドウィンドウにコマンドを直接入力する方法、もう1つは同じGUIを作成する方法です。ここでは、MATLABで画像処理の基本的な操作を実行するための両方の方法を示します。
1.MATLABエディターウィンドウを使用した画像処理
次に、エディタウィンドウで画像処理の基本的な操作を実行するためのコードを記述します。MATLABで使用されるすべての基本的な用語を理解するには、リンクをたどってください。以下のコードをコピーしてエディターウィンドウに貼り付けます。
a = imread ( 'F:\ circuitダイジェスト\ matlab \ camerman.jpgを使用した画像処理'); subplot(2,3,1); imshow (a); b = rgb2gray(a); subplot(2,3,2); imshow(b); c = im2bw(a); subplot(2,3,3); imshow(c); d = imadjust(b); subplot(2,3,4); imshow(d); e = a; e = rgb2gray(e); subplot(2,3,5); imhist(e); imfinfo( 'F:\ circuitダイジェスト\ matlab \ beard-man.jpgを使用した画像処理') = size(a) %colormap ( 'spring')
変数「a」では、コマンド imread( 'filename') を使用して画像をインポートし、 subplot(row、column、position) を使用して「2」行と「3」列の プロット を作成し、インポートした画像を「位置」に表示しています。 1 '。画像を表示するには、コマンド imshow( 'filename') を使用し ます 。
以下は、アップロードされた画像に対していくつかの基本的な処理を実行するためのいくつかのコマンドです。
- 変数「b」では、コマンド rgb2gray( 'filename') を使用して、RGB画像をグレースケール強度画像に変換し、位置「2」のプロットに表示しています。
- 変数「C」に、我々は、二値画像に変換されるか、コマンドの使用によって(黒)と「1」(白)「0」の形式で言うことができる im2bw(「ファイル名」) とにプロットでそれを表示します位置「3」。
- 変数「d」では、コマンド imadjust( 'filename') を使用してグレースケール画像の強度値を調整またはマッピングし、位置「4」のプロットに表示しています。
- 変数「e」では、コマンド imhist( 'filename') を使用してグレースケール画像のヒストグラムをプロットし、位置「5」のプロットに表示しています。ヒストグラムをプロットするには、常に画像をグレースケールに変換する必要があります。そうすれば、そのグラフィックファイルのヒストグラムを確認できます。
- Imfinfo( 'filename with location') コマンドは、グラフィカルファイルに関する情報を表示するために使用されます。
- = size( 'filename') コマンドは、特定のグラフィックファイルのサイズとカラープレーンを表示するために使用されます。
- colormap( 'spring') は、グラフィックファイルのカラーマップのタイプを変更するために使用されます。ここで、私のコードでは、このコマンドをコメントとして設定しましたが、パーセント記号を削除することで使用できます。MATLABには、Jet、HSV、Hot、Cool、Summer、Autumn、Winter、Gray、Bone、Copper、Pink、Lines、Springなどの多くの種類の色があります。
これらのように、MATLABにはさまざまなタスクを実行するために使用できるコマンドがいくつかあります。リンクをたどると、MATLABの画像処理関数を確認できます。
2. MATLABGUIを使用した画像処理
画像処理用のMATLABグラフィカルユーザーインターフェイスの作成
画像処理用のGUI(グラフィカルユーザーインターフェイス)を構築するには、 コマンドウィンドウ で以下のコマンドを入力してGUIを起動し ます 。
ガイド
ポップアップウィンドウが開き、下の画像に示すように、新しい 空白のGUI を選択します。
次に、プッシュボタンの数(プッシュボタンごとに異なるタスクを実行します)と1つの軸を選択して画像を表示する必要があります。
サイズを変更したり、プッシュボタンまたは軸の形状を変更したりするには、それをクリックするだけで、ボタンの角をドラッグできます。これらのいずれかをダブルクリックすると、その特定のボタンの色、文字列、タグ、およびその他のオプションを変更できます。カスタマイズ後は次のようになります
あなたはあなたの選択に従ってボタンをカスタマイズすることができます。これを保存すると、MATLABの エディターウィンドウ にコードが生成され ます 。生成されたコードを編集して、さまざまなプッシュボタンのタスクを設定します。以下では、MATLABコードを編集しました。
画像処理用のMATLABGUIコード
このプロジェクトの最後に、MATLABGUIを使用した画像処理用の完全なMATLABコードを示します。さらに、ここにダウンロード用のGUIファイル(.fig)とコードファイル(.m)が含まれています。これらを使用して、要件に応じてボタンまたは軸のサイズをカスタマイズできます。以下に説明するように、生成されたコードを編集しました。
では 「uploadimage」 機能、コピーやPCからファイルを挿入するためのコードの下に貼り付けます。ここでは、コマンド uigetfile( 'image extension type') を使用して、 MATLABGUIで画像 をインポートします。コマンド imread() を使用してそのファイルを読み取り、 axes(handles.axes1) を使用して axes1に コマンド imshow() で 表示 します。ここで、コマンド setappdata()を 使用して、変数をGUIに格納し、GUIの一部からGUIの他の部分に変数にアクセスできるようにします。
a = uigetfile( '。jpg') a = imread(a); axis(handles.axes1); imshow(a); setappdata (0、 'a'、a)
これで、すべての関数に、GUIの setappdata ()を使用して保存されたデータを取得するために使用されるコマンド getappdata() が表示されます 。
ここでは、画像処理で一般的に使用される8つの機能について説明します。
S.いいえ。 |
コマンド |
ボタン名 |
実行するタスク |
1.1。 |
uigetfile() |
画像をアップロード |
クリックしてディスクから画像をインポート |
2.2。 |
rgb2gray() |
RGBからグレー |
クリックしてRGB画像をグレースケールに変換 |
3.3。 |
im2bw() |
バイナリイメージに変換する |
クリックして画像をバイナリに変換します |
4.4。 |
- |
リセット |
クリックして画像を元の画像にリセットします |
5.5。 |
imhist() |
ヒストグラム |
クリックして画像のヒストグラムを表示します |
6.6。 |
imcomplement() |
補完画像 |
クリックして補完画像を確認 |
7。 |
edge(ファイル名、メソッド) |
エッジ検出 |
クリックして画像のエッジを検出します |
8.8。 |
imrotate(ファイル名、角度) |
時計回りに回転します |
クリックして画像を時計回りに回転させます |
9.9。 |
imrotate(ファイル名、角度) |
反時計回りに回転 |
クリックして画像を反時計回りに回転させます |
1.RGB画像をグレースケールに変換します
「rgb2gray」 機能、コピーするコードペースト階調にRGB画像を変換するコマンドを使用して )(rgb2grayを 。
a = getappdata(0、 'a'); agray = rgb2gray(a); axis(handles.axes1); imshow(agray);
2. バイナリイメージに変換します
「im2bw」 機能、コピーするコードペースト2値画像に画像を変換するかの形式で言うことができる「0」(黒)と「1」のコマンド使用して、(白) im2bwを() 。
a = getappdata(0、 'a'); abw = im2bw(a); axis(handles.axes1); imshow(abw);
3. 元の画像にリセット
「リセット」 機能、コピーするコードペーストの元の画像に編集画像をリセットします。
a = getappdata(0、 'a'); axis(handles.axes1); imshow(a);
4. 画像ヒストグラムをプロットします
「ヒストグラム」 機能、コピーするコードペーストのグレースケール画像のヒストグラムをプロットするコマンド使用して imhist(「ファイル名」) と上に表示 axes1 。ヒストグラムをプロットするには、常に画像をグレースケールに変換する必要があります。そうすれば、そのグラフィックファイルのヒストグラムを確認できます。
a = getappdata(0、 'a'); ahist = a; ahist = rgb2gray(ahist ); axis(handles.axes1); imhist (ahist);
5. 補完画像に変換する
では 「complementimage」 機能、コピーして参照してくださいコードの下に貼り付けて挿入したグラフィックの補数コマンド使用してファイルを )(imcomplementを 。
a = getappdata(0、 'a'); acomp = a; acomp = impcomplement(acomp); axis(handles.axes1); imshow(acomp);
6. キャニー法を使用したエッジ検出
「エッジ」 機能、コピーおよびコマンド使用して、グレースケール画像のエッジを検出し、検索するためのコードペースト エッジ(「ファイル名」、「方法」) 。 方法 の代わりに、 キャニー、プレウィット 、 モンタージュの 3つから選択できます。エッジ検出には キャニー 法を使用しています。また、元の画像から直接エッジを検出することはできません。最初にそれをグレースケールに変換する必要があり、次にエッジを検出することができます。
a = getappdata(0、 'a'); aedge = a; aedge = rgb2gray(aedge ); aedge = edge(aedge 、 'Canny') ' axes(handles.axes1); imshow (aedge);
7. 画像を時計回りに回転します
で 「時計回り」 機能、コピーするコードペースト時計方向に画像を回転させるコマンド使用して imrotate(ファイル名を、「角度」)
a = getappdata(0、 'a'); aclock = a; aclock = imrotate(aclock、270); axis(handles.axes1); imshow(aclock);
8. 画像を反時計回りに回転させる
「反時計回り」 機能、コピーするコードペースト反時計方向に画像を回転させるコマンド使用して imrotate(ファイル名を、「角度」)
a = getappdata(0、 'a'); aclock = a; aclock = imrotate(aclock、90); axis(handles.axes1); imshow(aclock);
画像処理用のMATLABGUIコードを実行する
次に、[実行]ボタンをクリックして、編集したコードを.mファイルで実行します。
MATLABは応答するのに数秒かかる場合があります。以下に示すように、MATLABが左下隅にビジーメッセージを表示するまで、GUIボタンをクリックしないでください。
すべての準備ができたら、[画像のアップロード]ボタンをクリックしてPCから画像をインポートします。これで、ボタンをクリックして画像を変換または回転できるようになります。以下の表は、特定のボタンをクリックしたときに実行しているタスクを示しています。
各ボタンをクリックした結果は、以下のようになります。
各ボタンの完全な動作は、以下のビデオで示されています。
MATHWORKS公式サイトから購入できるImageProcessing Toolboxを使用して、高度なレベルの画像処理を行うこともできます。高度なレベルの操作の一部を以下に示します。
- 幾何学的操作
- ブロック操作
- 線形フィルタリングとフィルター設計
- 変換
- 画像分析と強化
- バイナリイメージ操作