'프로그램 사용/octave'에 해당되는 글 5건

  1. 2026.05.19 octave로 공간 fft 돌려보기
  2. 2026.05.19 octave - pkg load image
  3. 2024.11.26 octave csv에서 읽어들이기
  4. 2023.07.12 octave audioread wav
  5. 2015.11.05 공짜 matlab? octave
프로그램 사용/octave2026. 5. 19. 16:19

귀찮으니(!) gpt를 통해서 딸깍~ 시전

% 이미지 읽기
img = imread("test.jpg");

% RGB -> grayscale 직접 변환
if ndims(img) == 3

    r = double(img(:,:,1));
    g = double(img(:,:,2));
    b = double(img(:,:,3));

    gray = 0.299*r + 0.587*g + 0.114*b;
else
    gray = double(img);
end

% 블럭 크기
blockSize = 32;

[h, w] = size(gray);

% 결과 저장
scoreMap = zeros(floor(h/blockSize), floor(w/blockSize));

% 블럭별 FFT 처리
for by = 1:blockSize:(h - blockSize + 1)
    for bx = 1:blockSize:(w - blockSize + 1)

        % 블럭 추출
        block = gray(by:by+blockSize-1, bx:bx+blockSize-1);

        % 평균 제거
        block = block - mean(block(:));

        % FFT
        F = fft2(block);

        % magnitude
        mag = abs(F);

        % 중앙 이동
        mag = fftshift(mag);

        center = floor(blockSize/2) + 1;

        radius = 4;

        [X, Y] = meshgrid(1:blockSize, 1:blockSize);

        dist = sqrt((X-center).^2 + (Y-center).^2);

        % 고주파만 사용
        mask = dist > radius;

        % 고주파 에너지
        energy = sum(mag(mask).^2);

        % diversity score
        score = log(1 + energy);

        iy = (by-1)/blockSize + 1;
        ix = (bx-1)/blockSize + 1;

        scoreMap(iy, ix) = score;
    end
end

% 정규화
scoreMap = scoreMap - min(scoreMap(:));
scoreMap = scoreMap / max(scoreMap(:));

% 결과 표시
figure;
imshow(uint8(gray));
title("Original");

figure;
imagesc(scoreMap);
axis image;
colorbar;
title("FFT Diversity Map");

 

원본

그레이스케일

 

원인은 모르겠으나 blocksize 5 이하로는 검은색으로 나온다.

 

blocksize = 6 blocksize = 8 blocksize = 10
blocksize = 12 blocksize = 16 blocksize = 32

 

원본

 

그레이스케일

 

blocksize = 6 blocksize = 10 blocksize = 12

blocksize = 16 blocksize = 18 blocksize = 20
blocksize = 24 blocksize = 28 blocksize = 32

 

이미지 폭이 큰 차이가 없어서 그런진 모르겠지만..

blocksize 10~12 정도가 가장 무난한 것 같다.

 

rgb에 대해서 각각 처리 후 합산인데 눈에 보이는건 크게 달라 보이진 않았는데

img = imread("test.jpg");

img = double(img);

blockSize = 32;

[h, w, c] = size(img);

scoreMap = zeros(floor(h/blockSize), floor(w/blockSize));

for by = 1:blockSize:(h - blockSize + 1)
    for bx = 1:blockSize:(w - blockSize + 1)

        totalEnergy = 0;

        % RGB 각각 처리
        for ch = 1:3

            block = img(by:by+blockSize-1, ...
                        bx:bx+blockSize-1, ch);

            block = block - mean(block(:));

            F = fft2(block);

            mag = abs(fftshift(F));

            center = floor(blockSize/2) + 1;

            radius = 4;

            [X, Y] = meshgrid(1:blockSize, 1:blockSize);

            dist = sqrt((X-center).^2 + (Y-center).^2);

            mask = dist > radius;

            energy = sum(mag(mask).^2);

            totalEnergy = totalEnergy + energy;
        end

        score = log(1 + totalEnergy);

        iy = (by-1)/blockSize + 1;
        ix = (bx-1)/blockSize + 1;

        scoreMap(iy, ix) = score;
    end
end

scoreMap = scoreMap - min(scoreMap(:));
scoreMap = scoreMap / max(scoreMap(:));

figure;
imshow(uint8(img));

figure;
imagesc(scoreMap);
axis image;
colorbar;
title("RGB FFT Diversity");

 

blocksize = 10

 

두개를 비교해보면 하단에 파란색 마트 정도는 좀 더 잘 보이는 차이가 있는데

처리 시간대비로는 그리 큰 효과를 얻긴 힘들지도 모르겠다.

grayscale rgb 각각 처리후 합산

 

 LAB 으로 전환해서 색상에 대해서 처리, blocksize = 10

% ==========================================
% LAB 기반 Fabric Diversity / Anomaly Map
% ==========================================

img = imread("test.jpg");

img = double(img) / 255.0;

%------------------------------------------
% RGB -> LAB 변환
%------------------------------------------

% sRGB gamma correction 제거
mask = img <= 0.04045;

img_linear = zeros(size(img));

img_linear(mask) = img(mask) / 12.92;
img_linear(~mask) = ((img(~mask)+0.055)/1.055).^2.4;

% RGB -> XYZ
M = [ ...
    0.4124564 0.3575761 0.1804375;
    0.2126729 0.7151522 0.0721750;
    0.0193339 0.1191920 0.9503041];

[h, w, ~] = size(img);

rgb_reshaped = reshape(img_linear, [], 3);

xyz = rgb_reshaped * M';

X = xyz(:,1) / 0.95047;
Y = xyz(:,2);
Z = xyz(:,3) / 1.08883;

% XYZ -> LAB helper
f = @(t) ((t > 0.008856).*t.^(1/3) + ...
         (t <= 0.008856).*(7.787*t + 16/116));

fx = f(X);
fy = f(Y);
fz = f(Z);

L = 116*fy - 16;
A = 500*(fx - fy);
B = 200*(fy - fz);

lab = zeros(h, w, 3);

lab(:,:,1) = reshape(L, h, w);
lab(:,:,2) = reshape(A, h, w);
lab(:,:,3) = reshape(B, h, w);

%------------------------------------------
% FFT Block Analysis
%------------------------------------------

blockSize = 32;
step = 16;   % overlap sliding

outH = floor((h - blockSize)/step) + 1;
outW = floor((w - blockSize)/step) + 1;

scoreMap = zeros(outH, outW);

% FFT mask 생성
center = floor(blockSize/2) + 1;

[Xm, Ym] = meshgrid(1:blockSize, 1:blockSize);

dist = sqrt((Xm-center).^2 + (Ym-center).^2);

radius = 4;

highMask = dist > radius;

%------------------------------------------
% Sliding Window
%------------------------------------------

oy = 1;

for by = 1:step:(h - blockSize + 1)

    ox = 1;

    for bx = 1:step:(w - blockSize + 1)

        totalEnergy = 0;

        % LAB 각 채널 FFT
        for ch = 1:3

            block = lab( ...
                by:by+blockSize-1, ...
                bx:bx+blockSize-1, ...
                ch);

            % 평균 제거
            block = block - mean(block(:));

            % FFT
            F = fft2(block);

            mag = abs(fftshift(F));

            % 고주파 에너지
            energy = sum(mag(highMask).^2);

            totalEnergy = totalEnergy + energy;
        end

        % 로그 스케일
        score = log(1 + totalEnergy);

        scoreMap(oy, ox) = score;

        ox = ox + 1;
    end

    oy = oy + 1;
end

%------------------------------------------
% Normalize
%------------------------------------------

scoreMap = scoreMap - min(scoreMap(:));
scoreMap = scoreMap / max(scoreMap(:));

%------------------------------------------
% Display
%------------------------------------------

figure;
imagesc(img);
axis image;
title("Original");

figure;
imagesc(scoreMap);
axis image;
colorbar;
title("LAB FFT Diversity / Anomaly Map");

 

block 10, step 16

 

block 10, step 10

 

rgb 각각 처리후 합산 RGB->LAB, 색상만 처리

'프로그램 사용 > octave' 카테고리의 다른 글

octave - pkg load image  (0) 2026.05.19
octave csv에서 읽어들이기  (0) 2024.11.26
octave audioread wav  (0) 2023.07.12
공짜 matlab? octave  (0) 2015.11.05
Posted by 구차니
프로그램 사용/octave2026. 5. 19. 16:08

이미지 팩(?) 쓰려는데 에러가 나서 찾아보니 패키지 설치하란다. 

>> pkg load image;
error: package image is not installed
error: called from
    load_packages at line 47 column 7
    pkg at line 623 column 7
>>

 

멀 이렇게 많이 깔어.. -_-

$ sudo apt install octave-image
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
다음의 추가 패키지가 설치될 것입니다 :
  default-jre-headless epstool fonts-freefont-otf libbtf1 libcombblas1.16.0
  libcxsparse3 libemf1 libfftw3-mpi3 libfltk-gl1.3 libfltk1.3 libglpk40
  libgraphicsmagick++-q16-12 libgraphicsmagick-q16-3 libhypre-2.22.1 libklu1
  libmumps-5.4 libpetsc-real3.15 libplot2c2 libpstoedit0c2a libptscotch-6.1
  libqhull8.0 libqrupdate1 libqscintilla2-qt5-15 libqscintilla2-qt5-l10n
  libscalapack-openmpi2.1 libscotch-6.1 libsundials-ida4
  libsundials-nvecparallel-petsc4 libsundials-nvecserial4
  libsundials-sunlinsol2 libsundials-sunmatrix2 libsuperlu-dist7
  libtrilinos-amesos-13.2 libtrilinos-aztecoo-13.2 libtrilinos-epetra-13.2
  libtrilinos-epetraext-13.2 libtrilinos-galeri-13.2 libtrilinos-ifpack-13.2
  libtrilinos-kokkos-13.2 libtrilinos-ml-13.2 libtrilinos-teuchos-13.2
  libtrilinos-trilinosss-13.2 libtrilinos-triutils-13.2
  libtrilinos-zoltan-13.2 mpi-default-bin octave octave-common octave-doc
  openmpi-bin openmpi-common pstoedit
제안하는 패키지:
  default-jre libfftw3-mpi-dev libiodbc2-dev default-libmysqlclient-dev
  graphicsmagick-dbg libqscintilla2-doc scalapack-doc octave-dev gfortran
  | fortran-compiler
다음 새 패키지를 설치할 것입니다:
  default-jre-headless epstool fonts-freefont-otf libbtf1 libcombblas1.16.0
  libcxsparse3 libemf1 libfftw3-mpi3 libfltk-gl1.3 libfltk1.3 libglpk40
  libgraphicsmagick++-q16-12 libgraphicsmagick-q16-3 libhypre-2.22.1 libklu1
  libmumps-5.4 libpetsc-real3.15 libplot2c2 libpstoedit0c2a libptscotch-6.1
  libqhull8.0 libqrupdate1 libqscintilla2-qt5-15 libqscintilla2-qt5-l10n
  libscalapack-openmpi2.1 libscotch-6.1 libsundials-ida4
  libsundials-nvecparallel-petsc4 libsundials-nvecserial4
  libsundials-sunlinsol2 libsundials-sunmatrix2 libsuperlu-dist7
  libtrilinos-amesos-13.2 libtrilinos-aztecoo-13.2 libtrilinos-epetra-13.2
  libtrilinos-epetraext-13.2 libtrilinos-galeri-13.2 libtrilinos-ifpack-13.2
  libtrilinos-kokkos-13.2 libtrilinos-ml-13.2 libtrilinos-teuchos-13.2
  libtrilinos-trilinosss-13.2 libtrilinos-triutils-13.2
  libtrilinos-zoltan-13.2 mpi-default-bin octave octave-common octave-doc
  octave-image openmpi-bin openmpi-common pstoedit
0개 업그레이드, 52개 새로 설치, 0개 제거 및 9개 업그레이드 안 함.
49.9 M바이트 아카이브를 받아야 합니다.
이 작업 후 171 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 

 

엥.. 패키지 깔고 나니 octave 아이콘이 하나 더 생기고 실행해보니, 7.1.0 과 6.4.0 두개가 생겼다.

 

7.1.0 에서는 여전히 에러가 나는데

6.4.0 에서는 잘 된다. 머냐..? 버전 가리냐?

'프로그램 사용 > octave' 카테고리의 다른 글

octave로 공간 fft 돌려보기  (0) 2026.05.19
octave csv에서 읽어들이기  (0) 2024.11.26
octave audioread wav  (0) 2023.07.12
공짜 matlab? octave  (0) 2015.11.05
Posted by 구차니
프로그램 사용/octave2024. 11. 26. 14:22

dlm read 인데... delimeter의 약자인가?

아무튼 느낌으로는

("파일명","구분자",건너뛸 라인수, 시작할 행, 시작할 열)

일 것 같다.

 

데이터 파일

$ cat test.csv
Wavelength= 88.7927 m
Time    Height  Force(KN/m)
0, -20, 70668.2
0, -19, 65875
0, -18, 61411.9
0, -17, 57256.4

 

gnu octave에서

>> ans = dlmread('tt.csv',',',2,0);
>> ans
ans =

            0  -2.0000e+01   7.0668e+04
            0  -1.9000e+01   6.5875e+04
            0  -1.8000e+01   6.1412e+04
            0  -1.7000e+01   5.7256e+04

>>

[링크 : https://stackoverflow.com/questions/25325577/calling-csv-file-into-octave]

 

M = dlmread(filename)
M = dlmread(filename,delimiter)
M = dlmread(filename,delimiter,R1,C1)
M = dlmread(filename,delimiter,[R1 C1 R2 C2])

[링크 : https://www.mathworks.com/help/matlab/ref/dlmread.html]

 

: data = dlmread (file)
: data = dlmread (file, sep)
: data = dlmread (file, sep, r0, c0)
: data = dlmread (file, sep, range)
: data = dlmread (…, "emptyvalue", EMPTYVAL)

[링크 : https://octave.sourceforge.io/octave/function/dlmread.html]

'프로그램 사용 > octave' 카테고리의 다른 글

octave로 공간 fft 돌려보기  (0) 2026.05.19
octave - pkg load image  (0) 2026.05.19
octave audioread wav  (0) 2023.07.12
공짜 matlab? octave  (0) 2015.11.05
Posted by 구차니
프로그램 사용/octave2023. 7. 12. 11:30

various 치고는 wav, flac, ogg 세개는 너무하지 않냐.. mp3는 어디갔어 ㅠㅠ

 

33.1 Audio File Utilities
The following functions allow you to read, write and retrieve information about audio files. Various formats are supported including wav, flac and ogg vorbis.

Loadable Function: info = audioinfo (filename)
Return information about an audio file specified by filename.

Loadable Function: [y, fs] = audioread (filename)
Loadable Function: [y, fs] = audioread (filename, samples)
Loadable Function: [y, fs] = audioread (filename, datatype)
Loadable Function: [y, fs] = audioread (filename, samples, datatype)

[링크 : https://docs.octave.org/v4.0.0/Audio-File-Utilities.html]

'프로그램 사용 > octave' 카테고리의 다른 글

octave로 공간 fft 돌려보기  (0) 2026.05.19
octave - pkg load image  (0) 2026.05.19
octave csv에서 읽어들이기  (0) 2024.11.26
공짜 matlab? octave  (0) 2015.11.05
Posted by 구차니
프로그램 사용/octave2015. 11. 5. 12:38

나중에 봐야겠.....

(나중은 안본다는 의미..!)


octave - GNU Octave language for numerical computations


[링크 : https://www.gnu.org/software/octave/]



+

3.8 부터 GUI가 생긴것 같고..

라즈베리에 있는 3.6.2는 --force-gui 옵션이 안 먹는 버전인듯?

[링크 : http://ubuntuforums.org/showthread.php?t=2196608]


+

윈도우 포트도 존재하지만 native가 아닌 mingw나 cygwin 위에서 도는 듯

[링크 : http://wiki.octave.org/Octave_for_Microsoft_Windows]

[링크 : https://ftp.gnu.org/gnu/octave/windows/]


엌..

JRE와 QT 라던가.. 이 기묘한 조합은 머지?






'프로그램 사용 > octave' 카테고리의 다른 글

octave로 공간 fft 돌려보기  (0) 2026.05.19
octave - pkg load image  (0) 2026.05.19
octave csv에서 읽어들이기  (0) 2024.11.26
octave audioread wav  (0) 2023.07.12
Posted by 구차니