본문 바로가기

MATLAB5

[이미지처리] 2. 이미지에 각종 효과 적용하기 (Conv2, Spatial filter; Gamma, Blur) 이미지 처리에는 공간 필터라는 것이 존재합니다. 이번 글에서는 Convolution에 대해 잠깐 소개를 하고 2차원 Convolution에 대해 알아본 후, 매트랩에서 이를 사용해 볼 것입니다. 음성 신호를 필터를 씌우듯이 이미지에도 필터가 존재하는데, 이 필터는 신기하게도 2차원 배열의 모양으로 존재합니다. 음성 신호를 필터를 씌울 때에는 Convolution(합성곱이라고 쓰나, 한글로는 잘 안씀)이라는 과정이 존재합니다. 잠깐 짚고 넘어가자면, 음성 신호와 필터의 주파수 응답이 존재하면, 시간축(Time Domain)에서 생각할 때 두 신호 중 하나를 뒤집어 곱하며 적분을 하고, 이를 Convolution이라고 부릅니다. 또한 이를 주파수 영역(Frequency Domain)에서 라플라스 혹은 푸리에.. 2019. 6. 10.
[이미지처리] 1. 이미지 파일(.jpg) 읽고 다루기 (매트랩의 각종 함수) 매트랩에서는 음성뿐 아니라 이미지 파일에 관한 수많은 함수들이 존재합니다. 함수들에는 이미지 읽기, 쓰기, 회전, 크기 변환 등이 있습니다. 어차피 매트랩에서 이미지를 행렬을 생각하기 때문에 행렬에서 할 수 있는 수많은 변환들은 모두 적용 가능하고 대부분은 기본 함수로 존재합니다. 1. imwrite : 이미지 읽기 (이 결과는 웬만해서는 3차원 행렬로 나옵니다. 가로픽셀*세로픽셀*3 이며, 3은 각각 R, G, B를 의미합니다. 한 픽셀마다 R, G, B값이 3차원 한 줄로 기록되는거죠.) 사용은 쉽게 아래와 같이 합니다. im2double은 필수는 아니며 이 함수를 사용하면 변수형이 double형으로 변환되고 사용하지 않는다면 uint8 과 같은 정수형으로 나올거예요. 필수는 아닙니다. img = i.. 2019. 6. 9.
[음성 처리] 3. 음성의 높낮이, 발음 구분하기 (Speech recognition) matlab에서는 plot을 통하여 음성에 대한 정보를 직접 찾을 수 있습니다. 또한, formant 개념을 통하여 유성음을 구분할 수 있습니다. 2020. 11. 07 Formant 관련 내용 추가했습니다. 1. 음성의 음높이 구분하기 음의 높이는 주파수를 의미하며 이를 찾기 위해서는 우리 음성의 주기를 찾아 역수를 취하면 주파수를 찾을 수 있습니다. 우선 C3, G3, C4 세 음높이를 '아'(/a/) 발음으로 녹음하여 음성 파일을 만들고, 이 음성 파일에서 음높이를 찾아보도록 하겠습니다. 녹음은 아래 글을 참고하여 할 수 있습니다. 2019/04/21 - [Matlab] - [음성 처리] 1. 음성 파일(.wav) 녹음 및 정보 확인하기 [음성 처리] 1. 음성 파일(.wav) 녹음 및 정보 확인하.. 2019. 4. 22.
[음성 처리] 2. 음성에서 노이즈 제거하기 (Noise suppression) matlab에서는 음성을 배열처럼 다뤄 손쉽게 합성할 수 있으며 filter를 통하여 다양한 filter를 만들고 음성을 filter에 통과시킬 수 있습니다. 이를 통해 노이즈가 혼합된 음성에서 filter를 통하여 기존의 음성을 복원해보겠습니다. 1. 음성과 노이즈 합성하기 우선 원하는 음성과 노이즈를 우선 따로 녹음하여 합성시킨 후 제거를 해보도록 하겠습니다. 글을 참고하여 3초간 남자 목소리, 여자 목소리, 소음(전자레인지 소리)을 각각 녹음합니다. 2019/04/21 - [Matlab] - [음성 처리] 1. 음성 파일(.wav) 녹음 및 정보 확인하기 [음성 처리] 1. 음성 파일(.wav) 녹음 및 정보 확인하기 매트랩에서는 audioread, audiowrite을 통해서 음성 파일 입출력이 .. 2019. 4. 22.
[음성 처리] 1. 음성 파일(.wav) 녹음 및 정보 확인하기 매트랩에서는 audioread, audiowrite을 통해서 음성 파일 입출력이 가능합니다. 1. 녹음하기 recorder1 = audiorecorder(48000,16,1) disp('Start'); recordblocking(recorder1, 3); disp('End'); 위 코드는 3초 동안 컴퓨터에 연결된 마이크를 통하여 3초간 음성을 입력받습니다. 코드를 보면, recorder1 = audiorecorder(48000,16,1) 48000Hz의 Sampling Rate, 16비트로 Quantization(Bits per sample)하며, 1개의 채널로 입력받는 recorder1을 생성합니다. 이 명령의 결과는 다음과 같습니다. recorder의 상세한 정보를 볼 수 있습니다. disp('St.. 2019. 4. 21.