원시 이미지 두 개를 FFT하려고합니다. 그러나 나는 unhandled exception (access violation)
을 얻고있다 - 나는 이유를 이해할 수 없었다. 나는 fftw 라이브러리를 사용하고있다. 먼저 두 이미지를 읽은 다음 FFT를 계산합니다. 그러나 계산을 시작하기 전에 액세스 위반 오류가 발생합니다.두 이미지의 FFT (고속 푸리에 변환)를 계산하는 동안 액세스 위반이 발생했습니다.
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include "fftw3.h"
#define Width 2280
#define Height 170
unsigned char im2[170*2280];
unsigned char im1[170*2280];
float image1[170*2280];
float image2[170*2280];
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
FILE* fp1, *fp2;
//Read two images
fp1 = fopen ("image1.raw" , "r");
fread(im1, sizeof(unsigned char), Width* Height, fp1);
fp2 = fopen ("image2.raw" , "r");
fread(im2, sizeof(unsigned char), Width* Height, fp2);
fclose(fp2);
fclose(fp1);
//Typecasting two images into float
for (int i = 0; i < Width* Height; i++)
{
image1[i]= (float)im1[i];
image2[i] = (float)im2[i];
}
fftwf_plan fplan1, fplan2;
fftwf_complex fft1[((Width/2)+1)*2];
fftwf_complex fft2[((Width/2)+1)*2];
fplan1 = fftwf_plan_dft_r2c_2d(Height, Width, (float*)image1, fft1, FFTW_ESTIMATE);
fftwf_execute(fplan1);
fftwf_destroy_plan(fplan1);
fplan2 = fftwf_plan_dft_r2c_2d(Height,Width, image2, (fftwf_complex*)fft2, FFTW_ESTIMATE);
fftwf_execute(fplan2);
fftwf_destroy_plan(fplan2);
_getch();
return 0;
}
어떤 줄에서 액세스 위반 오류가 발생합니까? – Pace
@lightalchemist .raw 파일. 픽셀 데이터 만있는 파일은 이미지 처리 응용 프로그램에서 매우 일반적입니다. – denver
@Pace : 줄 fftwf_execute (fplan1); 나에게 오류를 준다. – MShah