動画のノイズ除去について
5 ビュー (過去 30 日間)
古いコメントを表示
教えて頂きたく。動画のノイズをウェーブレットを使用してデノイズしたいと思っています。
%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 件のコメント
回答 (1 件)
Atsushi Ueno
2023 年 5 月 15 日
動画データ全体は(グレースケールでも)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); % グレースケール変換・ノイズ除去済データを表示
参考
カテゴリ
Help Center および File Exchange で 離散多重解像度解析 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!