📄 dib.cpp
字号:
}
/*************************************************
4值化
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Quartic()
{
HDIB hNewDib = QuarticDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
8值化
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Octonary()
{
HDIB hNewDib = OctonaryDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
low pass filter1
parameter: void
return: BOOL
*************************************************/
BOOL CDib::LowPass1()
{
HDIB hNewDib = LowPass1DIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
low pass filter2
parameter: void
return: BOOL
*************************************************/
BOOL CDib::LowPass2()
{
HDIB hNewDib = LowPass2DIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
low pass filter3
parameter: void
return: BOOL
*************************************************/
BOOL CDib::LowPass3()
{
HDIB hNewDib = LowPass3DIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
high pass filter1
parameter: void
return: BOOL
*************************************************/
BOOL CDib::HighPass1()
{
HDIB hNewDib = HighPass1DIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
high pass filter2
parameter: void
return: BOOL
*************************************************/
BOOL CDib::HighPass2()
{
HDIB hNewDib = HighPass2DIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
high pass filter3
parameter: void
return: BOOL
*************************************************/
BOOL CDib::HighPass3()
{
HDIB hNewDib = HighPass3DIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
边缘增强
parameter: int(choice a method)
return: BOOL
*************************************************/
BOOL CDib::EdgeEnhance1(int choice)
{
HDIB hNewDib = EdgeEnhance1DIB(m_hDib, choice);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
边缘增强
parameter: int(choice a method)
return: BOOL
*************************************************/
BOOL CDib::EdgeEnhance2(int choice)
{
HDIB hNewDib = EdgeEnhance2DIB(m_hDib, choice);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
Laplace边缘检测
parameter: int(choice a Laplace convolution kernel)
return: BOOL
*************************************************/
BOOL CDib::LaplaceEdgeDetect(int choice)
{
HDIB hNewDib = LaplaceEdgeDetectDIB(m_hDib, choice);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
Sobel边缘检测
parameter: int(choice a Sobel convolution kernel)
return: BOOL
*************************************************/
BOOL CDib::SobelEdgeDetect(int choice)
{
HDIB hNewDib = SobelEdgeDetectDIB(m_hDib, choice);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
模糊
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Blur()
{
HDIB hNewDib = BlurDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*********************************************************************
仿射变换
parameter: int a, b, c, theta --parameters of affine transformation
int mode --nearest or bilinear interpolation
return: BOOL
***********************************************************************/
BOOL CDib::Affine(int a, int b, int c, int theta, int mode)
{
HDIB hNewDib;
if(mode == NEAREST)
hNewDib = AffineDIB(m_hDib, a, b, c, theta);
else if(mode == BIINTERPO)
hNewDib = AffineDIBInterpolation(m_hDib, a, b, c, theta);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
change the canvas size of DIB
parameter: int nWidth, nHeight, nPosition
return: BOOL
*************************************************/
BOOL CDib::ChangeCanvasSize(int nWidth, int nHeight, int nPosition)
{
HDIB hNewDib = ChangeDIBCanvasSize(m_hDib, nWidth, nHeight, nPosition);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
中值滤波
parameter: void
return: BOOL
*************************************************/
BOOL CDib::MedianFilter()
{
HDIB hNewDib = MedianFilterDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
腐蚀
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Erosion()
{
HDIB hNewDib = ErosionDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
膨胀
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Dilation()
{
HDIB hNewDib = DilationDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
开运算
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Open()
{
HDIB hNewDib = OpenDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
闭运算
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Close()
{
HDIB hNewDib = CloseDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
判断一幅图像是否只有黑白两色
parameter: void
return: BOOL
*************************************************/
BOOL CDib::IsBinary()
{
return IsBinaryDIB(m_hDib);
}
/*************************************************
SUSAN边缘检测
parameter: void
return: BOOL
*************************************************/
BOOL CDib::SUSANEdgeDetect()
{
HDIB hNewDib = SUSANEdgeDetectDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
一个普通的边缘检测算法
parameter: void
return: BOOL
*************************************************/
BOOL CDib::EdgeDetect()
{
HDIB hNewDib =EdgeDetectDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
细化
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Thinning()
{
HDIB hNewDib = ThinningDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************
抽取骨架
parameter: void
return: BOOL
*************************************************/
BOOL CDib::Skeletonize()
{
HDIB hNewDib = SkeletonizeDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*********************************************************
两幅图像作差
parameter: CString(specify the other DIB file)
return: BOOL
**********************************************************/
BOOL CDib::Diff(CString FileName)
{
HDIB hNewDib = m_hDib;
HDIB htemp = LoadDIB((LPCTSTR)FileName);
if(htemp == NULL)
return FALSE;
hNewDib = DiffDIB(hNewDib, htemp);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*********************************************************
两幅图像相加
parameter: CString(specify the other DIB file)
return: BOOL
**********************************************************/
BOOL CDib::Add(CString FileName)
{
HDIB hNewDib = m_hDib;
HDIB htemp = LoadDIB((LPCTSTR)FileName);
if(htemp == NULL)
return FALSE;
hNewDib = AddDIB(hNewDib, htemp);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*********************************************************
两幅图像按位或
parameter: CString(specify the other DIB file)
return: BOOL
**********************************************************/
BOOL CDib::Or(CString FileName)
{
HDIB hNewDib = m_hDib;
HDIB htemp = LoadDIB((LPCTSTR)FileName);
if(htemp == NULL)
return FALSE;
hNewDib = OrDIB(hNewDib, htemp);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*********************************************************
zoom in
parameter: void
return: BOOL
**********************************************************/
BOOL CDib::ZoomIn()
{
HDIB hNewDib = ZoomInDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*********************************************************
zoom out
parameter: void
return: BOOL
**********************************************************/
BOOL CDib::ZoomOut()
{
HDIB hNewDib=ZoomOutDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib=hNewDib;
return UpdateInternal();
}
/*********************************************************
Canny边缘检测
parameter: void
return: BOOL
**********************************************************/
BOOL CDib::CannyEdgeDetect()
{
HDIB hNewDib = CannyEdgeDetectDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*********************************************************
透视变换
parameter: int r, f --10 times of true value
int theta, fai --degree
return: BOOL
**********************************************************/
BOOL CDib::PerspectiveTrans(int r, int theta, int fai, int f)
{
HDIB hNewDib = PerspectiveTransDIB(m_hDib, r, theta, fai, f);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************************
几何校正
parameter: POINT piont1...point4 --vertex of selected area
return: BOOL
**************************************************************/
BOOL CDib::GeometricCorrect(POINT point1, POINT point2, POINT point3, POINT point4)
{
HDIB hNewDib = GeometricCorrectDIB(m_hDib, point1, point2, point3, point4);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************************
离散傅立叶变换幅度谱
parameter: void
return: BOOL
**************************************************************/
BOOL CDib::DFTMagnitude()
{
HDIB hNewDib = DFTMagnitudeDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************************
离散傅立叶变换相位谱
parameter: void
return: BOOL
**************************************************************/
BOOL CDib::DFTPhase()
{
HDIB hNewDib = DFTPhaseDIB(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************************
调整图像长宽为2的整数次幂
parameter: void
return: BOOL
**************************************************************/
BOOL CDib::ModifyWH()
{
HDIB hNewDib = ModifyDIBHW(m_hDib);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*************************************************************
DCT transformation
parameter: CString(save the spectrum to this file)
return: BOOL
**************************************************************/
BOOL CDib::DCT(CString FileName)
{
HDIB hNewDib = DCTDIB(m_hDib, FileName);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*****************************************************************
IDCT transformation
parameter: CString(specify the file in which spectrum is saved)
return: BOOL
******************************************************************/
BOOL CDib::IDCT(CString FileName)
{
HDIB hNewDib = IDCTDIB(m_hDib, FileName);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*****************************************************************
Hough变换检测直线
parameter: int(the total number of lines that will be found)
return: BOOL
******************************************************************/
BOOL CDib::HoughLineDetect(int linenum)
{
HDIB hNewDib = HoughLineDetectDIB(m_hDib, linenum);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
/*****************************************************************
Hough变换检测圆
parameter: int(the total number of circles that will be found)
return: BOOL
******************************************************************/
BOOL CDib::HoughCircleDetect(int cirnum)
{
HDIB hNewDib = HoughCircleDetectDIB(m_hDib, cirnum);
if(!hNewDib)
return FALSE;
Destroy();
m_hDib = hNewDib;
return UpdateInternal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -