2.3.3 ヒストグラム(コントラスト)のマッチング
目次へのリンク
概要
MATLABによるヒストグラムマッチングについて紹介します。いつもどおりとてもシンプルです。
Image Processing Toolboxが必要です。
対応ファイル:I2_03_3_histmatch.m
初期化
Code
clear;clc;close all;imtool close all
画像の読込み・表示
clear;clc;close all;imtool close all
まず、画像を読み込みます。
Ref = imread('I2_03_3_knee1a.tif'); % 膝のMRIイメージの読込み
A = imread('I2_03_3_knee1b.tif');
figure;imshow([Ref A]);
ご覧の通り、明るさが画像間で異なっていることがわかります。
ヒストグラム表示
ヒストグラムでそれぞれの輝度分布を見てみましょう
figure;
subplot(2,2,1);imhist(Ref);title('リファレンス');
subplot(2,2,2);imhist( A);
目視でわかる通り、リファレンス画像に対して、knee1bの方は輝度が小さいことがわかります。
ヒストグラムのマッチング
リファレンスにマッチするように、knee1bの輝度分布を補正してあげます。
B = imhistmatch(A, Ref, 256); % AのヒストグラムをRefに一致させる
subplot(2,2,4);imhist(B);title('処理結果'); shg;
きちんと補正されている様子がわかりますね。
結果の表示
Code
figure;imshow([Ref repmat(239,[512 20]) B]);
figure;imshow([Ref repmat(239,[512 20]) B]);
結果として見た目がほぼ同じになりました!
imhistに関しては、経験から1 点注意が必要です。それは入力する画像データの型ですね。
uint8型だと0-255の範囲でヒストグラムをプロットしてくれます。
singleかdoubleだと0-1の範囲でヒストグラムをプロットしてくれます。注意が必要なのはこの浮動小数点型の時ですね。データの絵dswpqぉmk、範囲が0-1に納まっていないと当然出てくるプロットは役に立たないものになりますので、ご注意いただければと思います。データの正規化にはrescale関数が使えますヨ。
謝辞
本記事は @eigs さんのlivescript2markdownを使わせていただいてます。
目次へのリンク
Author And Source
この問題について(2.3.3 ヒストグラム(コントラスト)のマッチング), 我々は、より多くの情報をここで見つけました https://qiita.com/shun-kusano/items/db16fe43511b519995b9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .