このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
imdiffusefilt
イメージの異方性拡散フィルター処理
説明
例
異方性拡散を使用したエッジ保存平滑化の実行
イメージをワークスペースに読み取って表示します。
I = imread('cameraman.tif'); imshow(I) title('Original Image')
異方性拡散を使用してイメージを平滑化します。比較のために、ガウスぼかしも使用してイメージを平滑化します。芝生などのテクスチャ領域が両方の方法で同じ程度に平滑化されるように、ガウス平滑化カーネルの標準偏差 sigma
を調整します。
Idiffusion = imdiffusefilt(I); sigma = 1.2; Igaussian = imgaussfilt(I,sigma);
結果を表示します。
montage({Idiffusion,Igaussian},'ThumbnailSize',[]) title('Smoothing Using Anisotropic Diffusion (Left) vs. Gaussian Blurring (Right)')
異方性拡散では、ガウスぼかしよりエッジの鮮鋭度が維持されます。
異方性拡散を使用したエッジ保存型ノイズ削減の実行
グレースケール イメージを読み取り、強力なガウス ノイズをそれに適用します。ノイズを含むイメージを表示します。
I = imread('pout.tif'); noisyImage = imnoise(I,'gaussian',0,0.005); imshow(noisyImage) title('Noisy Image')
ノイズを含むイメージの画質を測定するために構造的類似性指数 (SSIM) を計算します。SSIM 値が 1 に近いほど、イメージはノイズなし参照イメージに近づきます。
n = ssim(I,noisyImage); disp(['The SSIM value of the noisy image is ',num2str(n),'.'])
The SSIM value of the noisy image is 0.26556.
異方性拡散を使用してノイズを削減します。まず、異方性拡散フィルターで既定のパラメーターを試し、結果を表示します。
B = imdiffusefilt(noisyImage);
imshow(B)
title('Anisotropic Diffusion with Default Parameters')
nB = ssim(I,B); disp(['The SSIM value using default anisotropic diffusion is ',num2str(nB),'.'])
The SSIM value using default anisotropic diffusion is 0.65665.
イメージはノイズによりまだ劣化しているので、フィルターを調整します。2 次伝導法を選択します。エッジの高いコントラストよりも、広い均一な領域がイメージの特性であるからです。最適な勾配のしきい値と反復回数を関数 imdiffuseest
を使用して推定します。結果のイメージを表示します。
[gradThresh,numIter] = imdiffuseest(noisyImage,'ConductionMethod','quadratic'); C = imdiffusefilt(noisyImage,'ConductionMethod','quadratic', ... 'GradientThreshold',gradThresh,'NumberOfIterations',numIter); imshow(C) title('Anisotropic Diffusion with Estimated Parameters')
nC = ssim(I,C); disp(['The SSIM value using quadratic anisotropic diffusion is ',num2str(nC),'.'])
The SSIM value using quadratic anisotropic diffusion is 0.88135.
結果のイメージでは、ノイズはより少なくなっています。SSIM 値が 1 に近い場合、イメージの画質が改善されることを確認できます。
3 次元エッジ保存型ノイズ削減の実行
ノイズの多い 3 次元グレースケール MRI ボリュームを読み込みます。
load mristack
異方性拡散を使用してボリュームでエッジ保存型ノイズ削減を実行します。脳の低コントラストの特徴を過剰に平滑化しないために、反復回数を既定の回数 5 から減らします。トレードオフは除去されるノイズが減ることです。
diffusedImage = imdiffusefilt(mristack,'NumberOfIterations',3);
ノイズを含むイメージとフィルター済みのイメージの詳細を比較するために、両方の 10 番目のスライスを表示します。
imshowpair(mristack(:,:,10),diffusedImage(:,:,10),'montage') title('Noisy Image (Left) vs. Anisotropic-Diffusion-Filtered Image (Right)')
ボリュームのすべてのスライスに対して平均をとった、Naturalness Image Quality Evaluator (NIQE: 画質の自然らしさの評価) スコアを計算します。NIQE スコアにより参照イメージを必要としない、画質の量的測定が得られます。NIQE スコアが小さいほど知覚的な画質が良好なことを反映します。
nframes = size(mristack,3); m = 0; d = 0; for i = 1:nframes m = m + niqe(mristack(:,:,i)); d = d + niqe(diffusedImage(:,:,i)); end mAvg = m/nframes; dAvg = d/nframes; disp(['The NIQE score of the noisy volume is ',num2str(mAvg),'.'])
The NIQE score of the noisy volume is 5.7794.
disp(['The NIQE score using anisotropic diffusion is ',num2str(dAvg),'.'])
The NIQE score using anisotropic diffusion is 4.1391.
NIQE スコアはフィルター済みイメージで、削減ノイズの観測値と整合性があります。
入力引数
I
— フィルター処理するイメージ
2 次元グレースケール イメージ | 3 次元グレースケール ボリューム
フィルターするイメージ。m 行 n 列の 2 次元グレースケール イメージまたは m x n x k の 3 次元グレースケール ボリュームとして指定します。
メモ
カラー イメージに異方性拡散フィルター処理を適用するには、各カラー チャネルで個別に imdiffusefilt
を使用します。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: imdiffusefilt(I,NumberOfIterations=4,Connectivity="minimal")
は 4 回の反復と最小の連結性を使用して、イメージ I
で異方性拡散を実行します。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: imdiffusefilt(I,"NumberOfIterations",4,"Connectivity","minimal")
は 4 回の反復と最小の連結性を使用して、イメージ I
で異方性拡散を実行します。
GradientThreshold
— 勾配のしきい値
数値スカラー | 数値ベクトル
勾配のしきい値。数値スカラーまたは長さ NumberOfIterations
の数値ベクトルとして指定します。GradientThreshold
の値は、勾配値を実際のエッジまたはノイズに分類することにより伝導プロセスをコントロールします。GradientThreshold
の値を増やすと、イメージがさらに平滑化されます。既定の値はイメージのダイナミック レンジの 10% です。関数 imdiffuseest
を使用して GradientThreshold
の適切な値を推定できます。
NumberOfIterations
— 反復回数
5
(既定値) | 正の整数
拡散プロセスで使用するための反復回数。正の整数として指定します。関数 imdiffuseest
を使用して NumberOfIterations
の適切な値を推定できます。
Connectivity
— 連結性
"maximal"
(既定値) | "minimal"
近傍とのピクセルの連結性。次の値のいずれかとして指定します。
"maximal"
— 2 次元イメージでは 8 個の最近傍を、3 次元イメージでは 26 個の最近傍を考慮する"minimal"
— 2 次元イメージでは 4 個の最近傍を、3 次元イメージでは 6 個の最近傍を考慮する
ConductionMethod
— 伝導法
"exponential"
(既定値) | "quadratic"
伝導法。"exponential"
または "quadratic"
として指定します。指数拡散は高コントラストのエッジを低コントラストのエッジより優先します。2 次拡散は大きい領域を小さい領域より優先します。
参照
[1] Perona, P., and J. Malik. "Scale-space and edge detection using anisotropic diffusion." IEEE® Transactions on Pattern Analysis and Machine Intelligence. Vol. 12, No. 7, July 1990, pp. 629–639.
[2] Gerig, G., O. Kubler, R. Kikinis, and F. A. Jolesz. "Nonlinear anisotropic filtering of MRI data." IEEE Transactions on Medical Imaging. Vol. 11, No. 2, June 1992, pp. 221–232.
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2018a で導入R2022b: スレッドベース環境のサポート
imdiffusefilt
は、スレッドベースの環境をサポートするようになりました。
参考
imdiffuseest
| imfilter
| imgaussfilt
| imguidedfilter
| locallapfilt
| imnlmfilt
| specklefilt
(Medical Imaging Toolbox)
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)