動画のノイズ除去について
5 views (last 30 days)
Show older comments
教えて頂きたく。動画のノイズをウェーブレットを使用してデノイズしたいと思っています。
%FEP動画のフレームを読み込み、グレースケールに変換する
vfep = VideoReader("Ultrasonic_analysis\4852fep_20230512.avi")
mvfep=zeros(vfep.Height,vfep.Width,3,int64(vfep.FrameRate*vfep.Duration),'uint8');
k=1;
while hasFrame(vfep)
mvfep(:,:,:,k) = readFrame(vfep)
gray_mvfep(:,:,:,k) = rgb2gray(mvfep(:,:,:,k));
imshow(mvfep(:,:,:,k))
k=k+1
end
implay(gray_mvfep,vfep.FrameRate)
%ウェーブレット変換によるノイズ除去
wvfep=wdenoise2(gray_mvfep);
implay(wvfep,vfep.FrameRate*duration);
下記のエラーがでます。引数の設定の仕方かもしれませんが、
対処法をご教授頂けないでしょうか?
よろしくお願いいたします。
次を使用中: WDENOISE2
IMは3 次元にする必要があります。
エラー: wdenoise2>checkInput (行 368)
validateattributes(im,{'numeric'},{'real','finite','3d','nonempty'},...
エラー: wdenoise2 (行 188)
[im,isRGB] = checkInput(im);
0 Comments
Answers (1)
Atsushi Ueno
on 15 May 2023
動画データ全体は(グレースケールでも)4次元データです。ウェーブレット変換によるノイズ除去はこれを受け付けないので、ループ内に入れフレーム1枚ずつ処理します。implayまで実行して確認していませんが、下記で良いと思います。
%FEP動画のフレームを読み込み、グレースケール変換・ノイズ除去を行う
vfep = VideoReader("Ultrasonic_analysis\4852fep_20230512.avi");
mvfep=zeros(vfep.Height,vfep.Width,3,int64(vfep.FrameRate*vfep.Duration),'uint8');
gray_mvfep=mvfep(:,:,1,:); % 追記
wvfep=gray_mvfep; % 追記
k=1;
while hasFrame(vfep)
mvfep(:,:,:,k) = readFrame(vfep);
gray_mvfep(:,:,1,k) = rgb2gray(mvfep(:,:,:,k));
wvfep=wdenoise2(gray_mvfep(:,:,1,k)); % ウェーブレット変換によるノイズ除去
%imshow(mvfep(:,:,:,k))
k=k+1
end
implay(gray_mvfep,vfep.FrameRate*vfep.Duration); % グレースケール変換済データを表示
implay( wvfep,vfep.FrameRate*vfep.Duration); % グレースケール変換・ノイズ除去済データを表示
8 Comments
See Also
Categories
Find more on 離散多重解像度解析 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!