[画像復元] matlab ウィーナー フィルター + 最小二乗法 + RC モーション ブラー画像復元に基づく [Matlab ソース コード 2778 を含む]

⛄1. 制約付き最小二乗フィルタリングの概要

1 ウィーナー フィルター モーションぼやけた画像の復元 ウィーナー
フィルター (ウィーナー フィルター) は、画像を復元するための古典的なフィルター方法であり、ぼやけた画像のノイズを軽減し、失われた細部を復元するために使用できます。以下は、ウィーナー フィルタリングを使用してぼやけた画像を復元するための基本的な手順です。

ぼかしパラメータを決定する: 既知のぼかしプロセスまたはモデルに従って、画像に対するぼかしプロセスの影響を記述する点像分布関数 (PSF) などのぼかしパラメータを決定します。

パワー スペクトル密度の推定: ぼやけた画像の周波数領域表現 (フーリエ変換) からパワー スペクトル密度 (PSD) を計算します。PSD は、画像内の各周波数成分のエネルギー分布を反映します。

回復フィルターの構築: ファジィ処理とノイズ特性に応じて回復フィルターを構築します。ウィーナー フィルターは、周波数領域で逆フィルターとノイズ ゲイン関数の比として定義されます。ぼかし処理の特性と画像内のノイズが考慮されます。

周波数領域フィルタリング:復元するぼやけ画像を周波数領域に変換し、復元フィルタと畳み込み演算を行います。この手順により、ノイズの影響が軽減され、 が復元されます。

逆フーリエ変換: 復元された空間領域画像は、周波数領域フィルター変換を通じて取得されます。

2. 最小二乗法による動きぼけ画像復元
最小二乗法画像復元は、最小二乗法に基づいた画像復元手法であり、最適化問題を通じて鮮明な画像を再構成することを目的としています。最小二乗法を使用した画像復元の基本的な手順は次のとおりです。

劣化モデルを確立する: 既知の画像劣化プロセスまたは劣化モデルに従って、対応する数学的記述を決定します。たとえば、ぼかしやノイズの復元では、ぼかしのプロセスを表現し、ノイズ モデルを追加するために畳み込み演算がよく使用されます。

目的関数の決定: 画像復元問題を最適解を見つける最適化問題に変換します。適切な重みを使用して、データ項 (観測ノイズと劣化モデルの差) と正則化項 (平滑化やその他の事前情報を容易にするために使用) を含む目的関数を定義します。

目的関数を最小化する: 目的関数を最小化する方法 (勾配降下法、共役勾配法、ニュートン法など) を使用して、最適な画像復元結果を見つけます。目的関数の値は、画像のピクセル値を繰り返し更新することで減少します。

正則化パラメータの選択: 正則化項目で、データ項目と正則化項目の間のトレードオフのバランスをとるために、適切な正則化パラメータ (または正則化係数または平滑化パラメータと呼ばれる) を選択します。これには、実際の問題でのデバッグと最適化が必要です。

リビルドクリアは鮮明な画像を生成します。画像の微調整は、コントラストや明るさの調整などの後処理ステップを通じて行うことができます。

⛄ 2. ソースコードの一部

%%%%%%%%%%% ぼやけた画像復元の設計と実装%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1. ウィーナー フィルタリングアルゴリズム%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2. 波形制約付き最小二乗フィルタリング アルゴリズム%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
3. Richardson-Lucy アルゴリズム%%%%%%%%%%%%%%%%%% % %

%%%%%%%%%%% 元の画像を読み取ります%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
すべてクリア
[ファイル名、ファイルパス] ]=uigetfile(' .tif; .jpg; .png; .img;*.gif;','必要な画像データを選択してください');% テスト画像を選択します
str=[FilePath FileName];% 画像のパスを選択しますアドレス
Ori_img = imread(str);% 読み取りイメージ
Figure(1)
subplot(331);imshow(Ori_img);title('元の画像')
%%%%%%%%%%%%%%%%%%% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%% モーション ブラー イメージを生成します %%%%%%%%%%%%%%%%%%%%%%%%%
LEN = 27; THETA = 27; % ブラーを設定します変数
psf = fspecial('motion',LEN,THETA); % 点像分布関数
MoHu_img = imfilter(Ori_img,psf,'conv','circular'); % モーション ブラー イメージを生成
subplot(332);imshow(MoHu_img); title('モーション ブラー イメージ');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%

%%%%%%%%%%% 1. ウィーナー フィルター アルゴリズムを使用して %%%%%%%%%%%%%%%%%%%%%%
SNR 0.01
Wiener_img_low = deconvwnr(MoHu_img, psf) ,0.01);% ウィーナー フィルター アルゴリズムを使用して
サブプロットを復元します(334);imshow(Wiener_img_low);title('ウィーナー フィルター アルゴリズム修復イメージ K=0.01'); %
SNR 0.001
Wiener_img_high = deconvwnr(MoHu_img,psf, 0.001);%ウィーナー フィルター アルゴリズムを使用して復元します。
subplot(335);imshow(Wiener_img_high);title('ウィーナー フィルター アルゴリズム修復イメージ K=0.001'); % SNR 0.0001 Wiener_img_veryhigh
=
deconvwnr(MoHu_img,psf,0.0001) ;%ウィーナー フィルター アルゴリズムを使用して、復元
サブプロット(335);imshow(Wiener_img_veryhigh);title('ウィーナー フィルター アルゴリズム修復画像 K=0.001');
%%%%%%%%%%%%%%%%%%% %%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%% 2. 波形制約付き最小二乗フィルタリング アルゴリズムを使用して、 %%%%%%%%
Mini_img = deconvreg(MoHu_img, psf); %波形制約付き最小二乗フィルタリング アルゴリズムを使用します。サブプロットを復元するための二乗フィルタリング アルゴリズム
(333);imshow(Mini_img);title('制約付き最小二乗フィルタ アルゴリズム修復画像');
%%%%%%%%%%%%%%%%%%%%%% %%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%% 3. Richardson-Lucy アルゴリズムを使用して復元します%%%%%%%%%%%%
デフォルトの繰り返し回数は 10 です
Lucy_img_10 = deconvlucy(MoHu_img,psf); % Richardson-Lucy を使用する アルゴリズムはデフォルトの反復回数を復元します
subplot(337);imshow(Lucy_img_10);title('Richardson-Lucy アルゴリズムは画像のデフォルトを修復します'); %
Repeat 回数 30
Lucy_img_30 = deconvlucy(MoHu_img,psf,30) ; %use Richardson-Lucy アルゴリズム復元繰り返し 30
subplot(338);imshow(Lucy_img_30);title('Richardson-Lucy アルゴリズム修復画像 30'); %
Repeat 回数 60
Lucy_img_60 = deconvlucy(MoHu_img,psf,60); %Restore Richardson-Lucy アルゴリズムを使用 繰り返し回数 30
subplot(339);imshow(Lucy_img_60);title('Richardson-Lucy アルゴリズム修復画像 60');
%%%%%%%%%%%%%%%%%%%% %%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%% 画像を保存%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
imwrite( Ori_img, 'テスト画像の保存.jpg');
imwrite(MoHu_img,'テスト画像のぼやけ.jpg');
imwrite(Wiener_img_low,'テスト画像 ウィーナー 0.01.jpg');
imwrite(Wiener_img_high,'テスト画像 ウィーナー 0.001.jpg' );
imwrite(Wiener_img_veryhigh,'テスト画像 ウィーナー 0.0001.jpg');
imwrite(Mini_img,'テスト画像の最小二乗.jpg');
imwrite(Lucy_img_10,'テスト画像 Lucy10.jpg');
imwrite(Lucy_img_30,' テスト画像Lucy30.jpg');
imwrite(Lucy_img_60,'テスト画像 Lucy60.jpg');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%

⛄3. 走行結果

ここに画像の説明を挿入
ここに画像の説明を挿入

⛄4. Matlab のバージョンとリファレンス

1 MATLAB バージョン
2014a

2 参考文献
[1] Jiang Li、Qin Fengqing、Zhang Tianqi、Wen Xingdong、He Wenjie、Wan Haofei. Constrained Least Square Filtering Realizes Defocused Blurred Image Restoration[J]. Journal of Yibin University. 2021,21(12)

3 備考 はじめ
に この部分はインターネットから取得したものであり、参照のみを目的としています。侵害がある場合は、連絡して削除してください。

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/131503743
おすすめ