MATLABを用いた​動画ファイルのノイズ​除去・シャープ化につ​いて

10 Ansichten (letzte 30 Tage)
Noruji Muto
Noruji Muto am 11 Dez. 2021
Kommentiert: Kenta am 21 Dez. 2021
お世話になります。
撮影した動画のノイズを除去し、シャープ化する方法を調べているのですが、適した方法を見つけることができません。SimlinkではなくMATLABを使用したいと考えています。
これまでに見つけた方法はMATLABではなくSimLinkのものだけでした。↓
ノイズ除去に関しては、画像に対する、SimlinkではなくMATLABを使っての方法があるようですが、私が求めているのは動画に対するものです。↓
MATLABを利用してノイズの除去・シャープ化を行う方法をどなたかご教示いただけないでしょうか?
よろしくお願いいたします。
  3 Kommentare
Noruji Muto
Noruji Muto am 12 Dez. 2021
Bearbeitet: Noruji Muto am 12 Dez. 2021
ありがとうございます。
ひとまずその3つの手順に分けてみようかと思います。
やりかたを調べてみますね。
Kenta
Kenta am 21 Dez. 2021
こんにちは、@Atsushi Ueno さまに整理頂いた手順で、3にあたるところですが、(単眼)超解像と捉えるのであれば、こちらのような深層学習を用いた方法も考えられます。
「シャープ」にするには、エッジフィルターのような方法も考えられますし、目的に応じて選択いただければと思います。

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 13 Dez. 2021
Bearbeitet: Atsushi Ueno am 14 Dez. 2021
その1:>MATLABを利用してノイズの除去を行う方法
ごま塩ノイズ - Wikipedia >この種類のノイズの効果的なノイズ除去方法は、メディアンフィルターまたはモルフォロジーフィルターである。 ソルトノイズまたはペッパーノイズのいずれか(両方ではない)を低減するには、逆調和平均フィルターが効果的である。
I = imread('eight.tif');
%% ごま塩ノイズ付加
% I = imnoise(I,'salt & pepper',0.02); % ⇒Image Processing Toolbox要
for index = 1:1000
I(randi(size(I,1)),randi(size(I,2)),:) = 255*(randi(2)-1); % ごま塩ノイズ付加(MATLABでOK)
end
%% 平均化フィルタ
% Kaverage = filter2(fspecial('average',3),Img)/255; % ⇒Image Processing Toolbox要
hsize = [3,3]; H = ones(hsize(1),hsize(2))/(hsize(1)*hsize(2));
Kaverage = uint8(conv2(I,H,'same')); % 平均化フィルタ適用(MATLABでOK)
%% メディアンフィルタ
% Kmedian = medfilt2(I); % ⇒Image Processing Toolbox要
Kmedian = I; % 端っこは元画像のまま(ちょっとインチキ)
for y = 2:size(I,1)-1 % メディアンフィルタ適用(MATLABでOK)
for x = 2:size(I,2)-1
Kmedian(y,x) = median(I(y-1:y+1,x-1:x+1),'all');
end
end
% 左から:ごま塩ノイズ付加画像, 平均化フィルタ適用結果, メディアンフィルタ適用結果
montage({I,Kaverage,Kmedian}, 'Size', [1 3]);
その2:>MATLABを利用してシャープ化を行う方法
I = imread('eight.tif');
%% 平均化(ぼかし)フィルタ
% Kaverage = filter2(fspecial('average',3),Img)/255; % ⇒Image Processing Toolbox要
hsize = [3,3]; H = ones(hsize(1),hsize(2))/(hsize(1)*hsize(2));
Bokasi = uint8(conv2(I,H,'same')); % 平均化フィルタ適用(MATLABでOK)
%% シャープ化フィルタ
S = [0 -1 0; -1 5 -1; 0 -1 0];
Sharp = uint8(conv2(Bokasi,S,'same')); % ぼかし画像にシャープ化フィルタ適用(MATLABでOK)
% 左から:元画像, ぼかし画像, ぼかし画像のシャープ化画像
montage({I,Bokasi,Sharp}, 'Size', [1 3]);
その3:動画ファイルのフレームを1枚ずつ画像処理する方法
上記を参考に、その2のぼかしフィルタ(カラー画像対応版)を適用しました。
hsize = [1,20]; % その2よりも横方向のみ強くぼかす
H = ones(hsize(1),hsize(2))/(hsize(1)*hsize(2)); % 平均化(ぼかし)フィルタ
vidObj = VideoReader('xylophone.mp4'); % ビデオファイルを読み取り
while hasFrame(vidObj) % 次のビデオフレームがあったら
vidFrame = readFrame(vidObj); % 次のビデオフレームを読み取り
R = uint8(conv2(vidFrame(:,:,1),H,'same')); % 平均化フィルタ適用(MATLABでOK)
G = uint8(conv2(vidFrame(:,:,2),H,'same'));
B = uint8(conv2(vidFrame(:,:,3),H,'same'));
vidFrame = cat(3,R,G,B); % RGB別にぼかした画像を元通りにくっ付ける
imshow(vidFrame); % 表示
pause(1/vidObj.FrameRate); % フレームレート分停止する
end
  1 Kommentar
Noruji Muto
Noruji Muto am 16 Dez. 2021
詳細にご回答いただきましてありがとうございます。
ご教示頂いた方法を試してみようと思います。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!