시리얼라이즈 함수
void CtestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 여기에 저장 코드를 추가합니다.
ar.Write(m_OutImage,256*256);
}
else
{
// TODO: 여기에 로딩 코드를 추가합니다.
CString strTemp = ar.m_strFileName.Right(3);
if(toupper(strTemp[0]) == 'R' &&
toupper(strTemp[1]) == 'A' &&
toupper(strTemp[2]) == 'W')
{
CFile *infile = ar.GetFile();
if(infile->GetLength()!=256*256)
{
AfxMessageBox(_T("영상파일 크기가 256*256 아님"));
return;
}
}
else if(toupper(strTemp[0]) == 'B' &&
toupper(strTemp[1]) == 'M' &&
toupper(strTemp[2]) == 'P')
{
CFile *infile = ar.GetFile();
BITMAPFILEHEADER hfileInfo;
BITMAPINFOHEADER hbmpInfo;
RGBQUAD hRGB[256];
ar.Read(&hfileInfo, sizeof(BITMAPFILEHEADER));
ar.Read(&hbmpInfo, sizeof(BITMAPINFOHEADER));
ar.Read(&hRGB, sizeof(RGBQUAD) *256);
ar.Read(m_InImage, sizeof(unsigned char) * hbmpInfo.biWidth * hbmpInfo.biHeight);
}
else
{
AfxMessageBox(_T("읽을 수 있는 파일 형식이 아님"));
return;
}
}
}
온 드로우(뷰)
void CtestView::OnDraw(CDC* pDC)
{
CtestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
for(int i=0; i<256; i++)
{
for(int j=0; j<256; j++)
{
unsigned char InVal = pDoc -> m_InImage[i][j];
unsigned char OutVal = pDoc -> m_OutImage[i][j];
pDC->SetPixel(j,i,RGB(InVal,InVal,InVal));
pDC->SetPixel(j+300,i,RGB(OutVal,OutVal,OutVal));
}
}
// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
}
저역통과 필터로 경계선을 흐리게 만들어보자.
void CtestDoc::LPF()
{
// TODO: 여기에 명령 처리기 코드를 추가합니다.
int temp;
int mask[3][3] = {{1,1,1},{1,1,1},{1,1,1}};
for(int i=1; i<255; i++){
for(int j=1; j<255; j++){
temp = 0;
for(int r=0; r<3; r++){
for(int c=0; c<3; c++)
temp += mask[r][c] * m_InImage[i+r-1][j+c-1]; //마스크를 제 위치에 자리잡는 부분.
}
m_OutImage[i][j] = (unsigned char)(temp/9);
}
}
for(int i=0; i<256; i++){ //모서리 부분을 처리하는 부분.
m_OutImage[0][i] = m_InImage[0][i];
m_OutImage[0][i] = m_InImage[i][0];
m_OutImage[255][i] = m_InImage[255][i];
m_OutImage[i][255] = m_InImage[i][255];
}
UpdateAllViews(NULL);
}
'MFC' 카테고리의 다른 글
데이터 메모리 영역, 허프만 트리..를 만들어야 하지만 리스트 만들기 (0) | 2013.05.30 |
---|---|
DCT변환 (0) | 2013.05.23 |
이미지의 기하학적 변환 (1) | 2013.05.09 |
메디안 필터, 가우시안 필터, 에지검출 (0) | 2013.05.02 |
MFC 시작하기와 영상 입출력하기 (2) | 2013.04.17 |