ayucat.ch 2015-16

id:ayucatのぶろぐ (Nexus 5 (2015) / iPhone 6s / Galaxy S6 edge / iOS 9 / Ubuntu Trusty / Android 6.0 Marshmallow / Thunderbird / AWS / クラブ / 祭り / 花火 / 海 / 野外フェス)

Wikipedia/Wikimedia Commonsで学ぶGNU Octave (準備編)

wikipedia:離散コサイン変換 をぼーっと見ていました。

File:Dandelion clock quarter dft dct.png - Wikimedia Commonsというのがありました。

再現してみようということになり、Ubuntu 9.04 もどき上の端末で

$ sudo aptitude install octave octave-image octave-signal

した上で、

$ octave

ってして、

% read the image
RGB = imread('Dandelion_clock.jpg');
% convert pixels to the [0 1] range
RGB = im2double(RGB);
% convert to grayscale
I = rgb2gray(RGB);

% evaluate magnitude of the DFT
F = abs(fft2(I));
% use log scale
F = log(1 + F);
F = log(1 + F);
% normalize
F = F/max(F(:));

% evaluate magnitude of the DCT
C = abs(dct2(I));
% use log scale
C = log(1 + C);
C = log(1 + C);
% normalize
C = C/max(C(:));

% show all the results
imshow(F), colorbar, colormap(jet);
figure, imhist(F);
figure, imshow(C), colorbar, colormap(jet);
figure, imhist(C);

を流し込みます。ただし、ここで、GNU Octaveおよびoctave-forgeではimcropが未実装ですので、

% take only a quarter
F = imcrop(F,[0 0 Y X]);

% take only a quarter
C = imcrop(C,[0 0 Y X]);

あたりは止めておきました。

実行結果 (画像) についてはまた後ほど。

ちなみに

$ sudo aptitude install octave

とするだけでは、imreadやim2doubleがないと怒られますので、octave-imageを入れました。
さらに、dct2がないと怒られたので、octave-signalを追加で入れました。