ウェーブレット変換で入手した画像をアレックスネットで用いたい。
2 views (last 30 days)
Show older comments
↑上の動画と同じ作業をしたいと思っています。
質問は2点あります。
1点目は、ファイルの保存形式です、自分が持っているウェーブレット変換の画像は以下の通りで、ウェーブレット変換した画像以外の余分な部分まで保存されてしまっています。動画ではウェーブレットの部分だけ保存されているので、同じような保存形式にしたいと思っています。
2点目は、ウェーブレット変換の表示方法です。私のウェーブレット変換の画像では下部に湾曲した点線が現れていますが、動画で拝見したウェーブレット変換後の画像には点線などがないので、もし可能であれば点線を消した見やすい画像で保存したいと思っております。
よろしくお願いいたします。
Answers (1)
Atsushi Ueno
on 14 Nov 2021
Edited: Atsushi Ueno
on 14 Nov 2021
元の資料:竹本佳充さんのディープラーニング・機械学習のための信号処理
>1点目は、ファイルの保存形式です
動画の中でコメントアウトされた「動画作成するコード」をググると出てきました。
ind2rgb(im2uint8(rescale(wt)),jet(128));
saveTimeFrequencyRep関数内にある上記のコードが肝です。スカログラムのデータを0-1にスケーリング後8 ビットの符号なし整数に変換し、更にjet カラーマップ配列を組み込んで縦x横x3のRGBカラー画像にしています。その後はカレントフォルダに引数の文字列から作成したファイル名を持つ画像ファイルに保存しています。
load noisdopp
fb = cwtfilterbank('SignalLength',numel(noisdopp));
[cfs,f,coi] = fb.wt(noisdopp);
saveTimeFrequencyRep(abs(cfs),1,'saveTimeFrequencyRep');
imshow(imread('saveTimeFrequenc_1.jpg'));
function saveTimeFrequencyRep(wt,ii,labelss)
imageRoot = fullfile(pwd);
im = ind2rgb(im2uint8(rescale(wt)),jet(128));
imgLoc = fullfile(imageRoot); %,char(labels(ii)));
imFileName = strcat(extractBefore(labelss, strlength(labelss)-3),'_',num2str(ii),'.jpg');
imwrite(imresize(im,[224 224]),fullfile(imgLoc,imFileName));
end
>2点目は、ウェーブレット変換の表示方法です
連続 1 次元ウェーブレット変換 - MATLAB cwt - MathWorks 日本:スカログラムのサブプロットへのプロット
上記を参考にすると良いと思います。この白い破線は、cwt関数が「プロットも自動的に行う機能」により描画されています。cwt関数が白い破線を描画する機能を無効にする方法は無いようです。
load mtlb
cwt(mtlb,Fs)
cwt関数からはプロットではなくスカログラムのデータを受け取って、plot関数で描画する事で白い破線の描画を回避する事が出来ます。
[cfs,frq] = cwt(mtlb,Fs);
tms = (0:numel(mtlb)-1)/Fs;
figure
surface(tms,frq,abs(cfs))
axis tight
shading flat
xlabel('Time (s)')
ylabel('Frequency (Hz)')
set(gca,'yscale','log')
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!