2010-11-23 2 views
0

나는 웹을 방황하고있다. 그리고 내가 읽은 튜토리얼들도 내가 정말로 이해하지 못한다. .pgm 그림 용 High-pass3 필터를 어떻게 구현합니까? 나는 구조체를 만들었습니다.ansi-c. .pgm 사진을위한 High-Pass3 필터

struct Image { 

char* file_name; //name of .pgm file 
char header[3]; 
int max_grey_value; 
int height; 
int width; 
int **pixels; //pixels matrix 
struct Image *next; //next element in the list 

}; 

이제 시작하는 방법은 무엇입니까? 내가 아는 한, 일부 SUM을 셀 수 밖에 없다. 그러나 나는 어떻게 완전하게 알지 못한다. 그리고이 전체가 하나의 픽셀인지 아니면 하나의 픽셀을위한 것인가? 좋아, 그럼? 나는 이것을 몫으로 나누어야합니다. 그 논쟁은 기능 자체이거나 그것 자체로 계산해야합니다. 나는 이것에 관해 정말로 혼란 스럽다. 누군가 초보자가 이해할 수있는 간단한 용어로 저 필터의 구현을 설명 할 수 있습니까?

+0

참조 구현/알고리즘에 대한 포인터를 게시하십시오. –

+0

질문에 대한 수정을 제안합니다. 첫째, 진정한 고역 통과 필터는 없습니다. 예를 들어, Sobel과 Laplacian은 모두 고역 필터로 간주됩니다. 둘째로, 정확히 어떤 부분에 문제가 있는지 구체적으로 설명해야합니다. 귀하의 초기 질문에 대답하겠습니다 만, 실질적인 도움을 얻으려면 더 많은 정보를 제공해야합니다. – misha

답변

2

먼저 구조에 PGM 이미지를 읽어야합니다. 이 작업을 수행하는 방법을 모르는 경우 PGM format에 대해 읽어보십시오.

일단 작업을 완료하면 필터를 구성해야합니다. 약간 모호한 질문에서 크기가 3x3 인 필터가 필요한 것 같습니다. 이론 상으로는 Image 구조체를 다시 사용하여 필터를 나타낼 수 있습니다. 필터 내용 (pixels 부분)은 사용중인 특정 필터 (예 : Laplacian 또는 Sobel)에 따라 달라집니다. 필터를 얻은 후 첫 번째 단계에서로드 한 이미지가 convolve입니다. 엄밀히 말하면, 여기에서 끝났지 만 실제로 결과를보고 싶다고 가정하면 write이 다른 PGM 파일에 대한 회선 결과가되어야합니다.

자신 만의 회선 기능을 작성해야합니다 (질문에서 언급 한 "일부 SUM 계산"부분 포함). 이미 제공된 경우가 아니면 자신의 이미지 I/O 기능도 필요합니다.

convolution 출력은 this과 비슷합니다.

메모 메모 디자인에서 파일 시스템의 메모리 및 이미지 표현에서 이미지 표현을 분리하는 것이 좋습니다. 예를 들어 현재 Image 구조체는 각 이미지에 해당하는 filename이 있다고 가정하며 파일 시스템에서 Image이로드되지 않은 경우 의미가 없습니다 (예 : 사용자가 직접 만든 필터 인 경우).

+0

+1 질문을 이해하기 위해. –