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

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

请先登录,再进行评论。

采纳的回答

Atsushi Ueno
Atsushi Ueno 2021-12-13
编辑:Atsushi Ueno 2021-12-14
その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 个评论
Noruji Muto
Noruji Muto 2021-12-16
詳細にご回答いただきましてありがとうございます。
ご教示頂いた方法を試してみようと思います。

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2019a

Community Treasure Hunt

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

Start Hunting!