📄 mycolorspace.h
字号:
// MyColorSpace.h: interface for the MyColorSpace class.
// 04.05;
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MYCOLORSPACE_H__88292E4A_088A_45EB_8DCF_38694FB6190F__INCLUDED_)
#define AFX_MYCOLORSPACE_H__88292E4A_088A_45EB_8DCF_38694FB6190F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "mymath.h"
#define PI 3.14159265359
typedef struct tagMyRGB{
FLOAT r;
FLOAT g;
FLOAT b;
}MyRGB;
typedef struct tagMyHSV{
FLOAT h;
FLOAT s;
FLOAT v;
}MyHSV;
typedef struct tagMyLUV{
FLOAT l;
FLOAT u;
FLOAT v;
}MyLUV;
//一维直方图单元;
typedef struct tagD1ColorBinUnit{
MyHSV hsv;
FLOAT count;
}D1ColorBinUnit;
//一维直方图;
typedef struct tagD1ColorBin{
D1ColorBinUnit* binunits;
INT bincount;//直方图中BIN数;
}D1ColorBin;
typedef struct tagHsvBelongTo{
MyHSV hsv;
INT belongto;
}HsvBelongTo;
//直方图BIN数;
#define CBDIM 72
class MyColorSpace
{
public:
MyColorSpace();
virtual ~MyColorSpace();
BOOL Rgb2Hsi(FLOAT r, FLOAT g, FLOAT b, FLOAT& h, FLOAT& s, FLOAT& i);//冈萨雷斯《数字图像处理》第二版,p235-p237;
BOOL Hsi2Rgb(FLOAT h, FLOAT s, FLOAT i, FLOAT& r, FLOAT& g, FLOAT& b);//冈萨雷斯《数字图像处理》第二版,p237;
BOOL Rgb2Ycbcr(FLOAT r, FLOAT g, FLOAT b, FLOAT& y, FLOAT& cb, FLOAT& cr);//据《Color and Texture Descriptors》by B.S.Manjunath,eg.
BOOL Ycbcr2Rgb(FLOAT y, FLOAT cb, FLOAT cr, FLOAT& r, FLOAT& g, FLOAT& b);//Rec 601-1 YCbCr to RGB, 根据David Bourgin, Color space FAQ
BOOL Rgb2Hsv(FLOAT r, FLOAT g, FLOAT b, FLOAT& h, FLOAT& s, FLOAT& v);//据《Color and Texture Descriptors》by B.S.Manjunath,eg.
BOOL Rgb2Hsv2(FLOAT r, FLOAT g, FLOAT b, FLOAT& h, FLOAT& s, FLOAT& v);//姚子程序中的转换,和上面书中的的不一样???
DOUBLE GetHsvDistance(MyHSV x, MyHSV y);
//BOOL Luv2Rgb(FLOAT r, FLOAT g, FLOAT b, FLOAT& l, FLOAT& u, FLOAT& v);
BOOL Rgb2Xyz(FLOAT r, FLOAT g, FLOAT b, FLOAT& x, FLOAT& y, FLOAT& z);//RGB to CIE XYZitu(D65),根据David Bourgin, Color space FAQ
BOOL Xyz2Rgb(FLOAT x, FLOAT y, FLOAT z, FLOAT& r, FLOAT& g, FLOAT& b);//CIE XYZitu(D65) to RGB,根据David Bourgin, Color space FAQ
BOOL Xyz2Luv(FLOAT x, FLOAT y, FLOAT z, FLOAT& l, FLOAT& u, FLOAT& v);//CIE XYZitu(D65) to CIE Luv,根据David Bourgin, Color space FAQ
BOOL Xyz2Lab(FLOAT x, FLOAT y, FLOAT z, FLOAT& l, FLOAT& a, FLOAT& b);//CIE XYZitu(D65) to CIE Lab, 根据David Bourgin, Color space FAQ
BOOL Lab2Lch(FLOAT li, FLOAT a, FLOAT b, FLOAT& lo, FLOAT& c, FLOAT& h);//CIE Lab to CIE LCH, 根据David Bourgin, Color space FAQ
BOOL RgbtoHsv(BYTE* inDatas, int width, int height, MyHSV* hsvbuff);//将位图图像数据转换为HSV数据;
BOOL RgbtoXyz(BYTE* inDatas, int width, int height, FLOAT* xyzbuff);//将位图图像数据转换为HSI数据;
BOOL XyztoRgb(FLOAT* xyzDatas, int width, int height, BYTE* rgbDatas);
BOOL RgbtoLuv(BYTE* inDatas, int width, int height, MyLUV* luvbuff);//将位图图像数据转换为LUV数据;
BOOL RgbtoLuvPcm(BYTE* inDatas, int width, int height, MyLUV* luvbuff);//基于表转换,将位图图像数据转换为LUV数据;
BOOL Luv2Rgb(FLOAT l, FLOAT u, FLOAT v, INT& r, INT& g, INT& b);//LUV to RGB;
BOOL LuvToRgb(FLOAT* luvData, INT width, INT height, BYTE* rgbData);
private:
MyMath myMath;
FLOAT Labf(FLOAT input, FLOAT Y_Yn);//用于计算Lab色彩;
};
#endif // !defined(AFX_MYCOLORSPACE_H__88292E4A_088A_45EB_8DCF_38694FB6190F__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -