출처] 2중 선형 보간법(bilinear Interpolation)|작성자 배트맨

MBufBayer 의 옵션중하나로써,

2중 선형 보간법(bilinear Interpolation)사각형의 네끝점의 값만 알고 있을 경우,

 

사각형 내부의 임의의 위치에서의 값을 알아내는데 사용되는 계산 방법이다.

 

2중 선형 보간법(bilinear Interpolation)에 대한 자료를 인터넷에서 검색하니 영문자료 밖에 없어서

일단 여기에 이해하기 쉽게 정리해 본다.

 

2중 선형보간법은 선형보간법을 2중으로 사용하여 계산하는 방법이므로,

이해를 위해서는 먼저 선형보간법(Linear Interpolation)을 알아야 한다.

 

선형보간법의 경우는 단순히 직선상의 두점 사이의 임의 위치에서의 값을 계산해내는 것이라면,

2중 선형 보간법은 평면을 이루는 네 꼭지점안에 있는 임의의 위치에서의 값을 계산해내는 방법이다.

 

그림으로 설명하자면,

 

 

위의 그림의 경우,

사각형 모서리의 끝점 Q11, Q12, Q21, Q22 4개의 값만 알고 있다고 가정했을 때...

그 사각형 사이의 임의의 위치에서는 어떤 값이 될까?

 

일단 계산 개념은 아래와 같이 간단하다.

 

1. Q11과 Q21 두점 사이에 있는 R1의 값을 선형보간법을 사용하여 알아낸다.

2. Q12과 Q22 두점 사이에 있는 R2의 값을 선형보간법을 사용하여 알아낸다.

3. R1과 R2 두점 사이에 있는 P의 값을 선형보간법을 사용하여 알아낸다.

 

Visual Studio 2005로 제작된 C++ 샘플도 첨부하니 참고하기 바란다.

 

'영상처리 > MIL' 카테고리의 다른 글

C# 영상처리 소스 (panel에 출력)  (1) 2014.01.17
C# MIL MappHookFunction 처리하기  (0) 2014.01.17
MIL 9.0 Error : Matrox.MatroxImagingLibrary 로드 에러  (0) 2014.01.17
Bayer Filter 내용  (1) 2014.01.17
3CCD Camera 사용  (0) 2014.01.17

Meteor2/4와 Meteor2/MC 차이점.

Meteor2/4와 Meteor2/MC는 두 보드 모두 아날로그카메라를 대상으
로 한다는 점에 공통점이 있습니다.
하지만, Meteor2/4와 Meteor2/MC 보드의 차이는 다음과 같습니다.

첫째로 하나는 지원하는 영상입력신호의 종류가 Meteor2/4는 표준
아날로그입력신호인 RS170(흑백), NTSC(칼라)(혹은 CCIR, PAL)만을
지원하는 반면 Meteor2/MC는 이러한 표준신호들외에 Progressive
Signal(아날로그표준들은 모두 Interlaced방식인건 아시죠?^^)을 지
원하고 표준에서 제한되는 640*480의 해상도만이 아니라 다른 비표
준해상도를 사용할수가 있다는 장점이 있습니다. 물론 카메라에 따
라서 달라지겠죠..

둘째로는 두대 이상의 카메라로 동시Grab을 할수 있느냐 하는 것입
니다. 카메라를 사용하는 용도에 따라서는 동시에 찍어야 할 때가
있고, 카메라를 Switching하면서 같이 사용해도 되는 경우가 있습니
다. Meteor2/4는 최대 12대의 흑백카메라를 스위칭하여 사용할수 있
는 반면 동시그랩은 할 수 없습니다. 하지만, Meteor2/MC보드는 MC
가 Multi-Channel의 약자인것에서 볼수 있듯이 흑백카메라 3대를 동
시에 그랩할 수 있습니다. RGB 카메라의 경우는 두대를 스위칭할
수 있고, 흑백카메라는 최대 6대를 스위칭할 수가 있습니다.

간단히 말하면 Meteor2/MC는 Meteor2/4가 사용될수 있는 거의 모든
경우에 사용할수가 있죠(케이블에 있어서 차이는 있습니다.), 그러
나 Meteor2/MC보드를 사용해야 하는 예로는 다음과 같은 경우가 있
습니다.

- 카메라의 영상신호방식이 표준을 따르지 않는 경우
'Progressive방식을 사용하는 경우
'해상도가 640*480이 아닌 경우
'영상신호의 초당 프레임수가 30프레임(60필드)이 아닌경우

- 카메라의 동시그랩을 원할 때
'흑백카메라 최대 3대 동시그랩
(칼라카메라동시그랩이 되는 Matrox제품은 현재 출시되어
있지 않습니다.)

 

'영상처리 > 기타' 카테고리의 다른 글

프레임 심도의 중요성 (영상심도)  (0) 2014.11.06
렌즈 배율별 광량차이  (0) 2014.10.13

목적: Hitachi CCD Camera 사용(FD-202SCL)

원인: 본 카메라는 3CCD Camera로써, BayFilger가 존재하지 않지만,

해당 소스에서 BayBuf를 사용하여 흑백으로 화면이 표시됨.

해결: MbufBayer -> 사용하지 않음

 

문제부 소스

////////////////////////////////////////////////////////////////////////////////////////////////

// FD-202SCL is 3CCD Camera system. It has a 3CCD Camera type. So It haven't bayer filter.
// If you want to use for your ccd image, you don't need to MBufBayer function in MIL Library.
#ifdef _FD_202SCL_HITACHI_CCD_CAMERA
// not use.
#else
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType+M_WHITE_BALANCE_CALCULATE);
EnterCriticalSection(&g_csWhiteBalance);

#ifdef _MIL_90
if(pDlg->m_bUse_AVERAGE_2X2)
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType/* +M_AVERAGE_2X2*/);
else
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType +M_ADAPTIVE);
#else
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType +M_ADAPTIVE);
#endif
LeaveCriticalSection(&g_csWhiteBalance);
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////

 

해당 소스부 .h

1. MIL_ID m_MilIdImg; // Image buffer identifier

 

.cpp

m_MilIdImg = M_NULL; // Image buffer identifier

MbufClear(m_MilIdImg, 0);

 

// Solios 사용.

pSystem = "\\\\.\\M_SYSTEM_SOLIOS ;

 

// Main Mil Sys 할당

MsysAlloc((char*)pSystem, M_DEF_SYSTEM_NUM, M_COMPLETE | M_DDRAW, &m_MilIdSys);

 

MdigControl(m_MilIdDig, M_GRAB_MODE, M_ASYNCHRONOUS); //must M_ASYNCHRONOUS

MdigControl(m_MilIdDig, M_GRAB_TIMEOUT , 1000);

 

MdigHookFunction(m_MilIdDig, M_GRAB_START, HookFrameEnd, (void *)(this)); // 데이터 취득 함수설정
MdigHookFunction(m_MilIdDig, M_GRAB_END, HookGrabEnd, (void *)(this)); // 취득 함수 설정

 

// 3 band (r,G,B) grab x/y size 설정, MildImg 저장.

MbufAllocColor(m_MilIdSys, 3, m_nGrabSizeX, m_nGrabSizeY, 8 + M_UNSIGNED, M_IMAGE + M_DISP + M_GRAB + M_PROC, &m_MilIdImg);

 

//Allocate from dcf file. szDCFFile = Camera 사용 DCF files.
MdigAlloc(m_MilIdSys, M_DEFAULT, (MIL_TEXT_PTR)szDCFFile, M_DEFAULT, &m_MilIdDig);

 

// band acquire

long band ;
band = MdigInquire(m_MilIdDig, M_SIZE_BAND, M_NULL);

 

// mil 데이터 취득.

#ifdef _FD_202SCL_HITACHI_CCD_CAMERA
MdigGrab(pDlg->m_MilIdDig, pDlg->m_MilIdImg);
#else
MdigGrab(pDlg->m_MilIdDig, pDlg->m_MilIdImgField[g_nBufIndex]);
#endif

+ Recent posts