CN1619295A - Pork colour grading instrument - Google Patents

Pork colour grading instrument Download PDF

Info

Publication number
CN1619295A
CN1619295A CN 200410098904 CN200410098904A CN1619295A CN 1619295 A CN1619295 A CN 1619295A CN 200410098904 CN200410098904 CN 200410098904 CN 200410098904 A CN200410098904 A CN 200410098904A CN 1619295 A CN1619295 A CN 1619295A
Authority
CN
China
Prior art keywords
image
pork
image acquisition
colour
color
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200410098904
Other languages
Chinese (zh)
Inventor
徐幸莲
彭增起
江龙建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Agricultural University
Original Assignee
Nanjing Agricultural University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Agricultural University filed Critical Nanjing Agricultural University
Priority to CN 200410098904 priority Critical patent/CN1619295A/en
Publication of CN1619295A publication Critical patent/CN1619295A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

The present invention relates to a pig meat colour sorting apparatus. It includes image acquisition equipment and pig meat colour sorting software. Its image acquisition chamber is made by using semispherical high-temp. resisting material whose diameter is 600 mm, it sinner wall is coated with white colour, four halogen lamps with 50 W are spaced and mounted on the bottom portion of said image acquisition chamber. Said image acquisition chamber interior also is equipped with sample-bearing table and digital camera. The sorting software is formed from image input control module, image separation and identification module, image colour characteristic parameter extraction module and pig meat colour grade output module, etc.

Description

Pork colour grading instrument
One, technical field
This invention pork colour grading instrument belongs to the automatic stage equipment of computer vision and agricultural product quality field.
Two, technical background
The significant variation takes place with its quality of the asynchronism(-nization) that refrigerates, puts in live fresh pork, the significant index of a simple identification is exactly the color of pork, the consumer selects to buy according to the difference of pork colour through regular meeting, the color grade standard neither one science, objective is come reference, simultaneously have no basis put the time (the color difference) of fresh meat of the live fresh pork sold of supermarket adopts different prices, really do not accomplish " fixing the price according to the quality "; External pork quality all has corresponding color grade standard, their pork colour standard plays enormous function at the price of pork, domestic retail, the field of international trade, and China's pork product does not have the color grade standard of oneself so far, can't and international joint, participate in the pork trade war in the world, abroad, utilize computer vision technique that pork colour is carried out classification and obtained the commercialization application, but the technology of domestic this respect and equipment are still blank.Therefore press for and set up series of computation machine hierarchy system, unified pork colour classification standard is to adapt to the needs in quality control and market.
Three, summary of the invention
Technical matters the present invention is directed to present China and lacks pork colour computing machine hierarchy system, set up a cover pork colour grading instrument, mainly rely on people's the organs of vision to carry out to overcome traditional pork colour grading, be subjected to people's subjective will influence easily, the result of classification lacks the defective of objectivity.
A kind of pork colour grading instrument device of technical scheme comprises image capture device and pork colour grading software, it is characterized in that:
(1) image acquisition equipment comprises image acquisition chamber 4, digital camera 5:
Image acquisition chamber 4 is that the semisphere exotic material of 600mm is made for diameter, the inwall painted white, 4 50W Halogen lamp LEDs 1 equidistantly are installed on the bottom of image acquisition chamber 4,2 of load sample platforms in the image acquisition chamber 4 are the black rubber plate of polishing with crocus cloth, sample 3 places on the rubber slab, and it is the 45mm circular hole that a diameter is opened on 4 tops, image acquisition chamber; Select CANON-PowerShotA70 digital camera 5 for use, camera lens passes the 4 tip circle holes in the image acquisition chamber;
(2) pork colour grading software
Pork colour computing machine grading software is made up of image input control module, image segmentation and identification module, color of image characteristic parameter extraction module, pork colour grade output module:
A, image input control module can be opened the coloured image of digital camera 5 camera lenses, automatic shooting sample 3 automatically;
B, image segmentation and identification module are used for that coloured image to input carries out denoising, goes background, edge extracting, the validity feature color extracting zone that finally obtains the pork image;
C, color of image characteristic parameter extraction module are used for the color characteristic parameter of effective color extracting extracted region images that image segmentation and identification module are obtained, comprise red R, green G, blue B, color H, saturation degree S, brightness V;
D, pork colour grade output module are used to call pork colour grade model: pork colour grade G=4.62+6.63*S-10.20*V, output pork colour rank.
Beneficial effect pork colour grading instrument of the present invention has carried out small-scale in supermarkets such as Nanjing Formocarbams on probation, after on probation, client is good to this system response, this cover system has been arranged, the material benefit that they are vivid experiences " by matter opinion level, determine the price by level " brings, this system performance is stable, multiple functional, easy to use, simple to operate simultaneously, is subjected to supermarket managerial personnel and equipment operator's favorable comment.
Four, description of drawings
Fig. 1 pork colour computing machine stage equipment image input system
1. 2. 3. 4. 5. 6. 7. computing machine of data line of digital camera of image acquisition chamber of sample of load sample platform of bulb
Fig. 2 pork colour computing machine grading instrument overall framework figure
Five, embodiment
The present invention is a cover pork colour grading instrument, is made up of image acquisition equipment and pork colour computing machine grading software.
(1) image acquisition equipment
4. a, image acquisition chamber are the semisphere of 600mm by diameter, the inwall painted white, 4 50W Halogen lamp LEDs equidistantly are installed on bottom 4., image acquisition chamber, the load sample platform of image acquisition chamber in 4. 2. face is the black rubber plate of polishing with crocus cloth, 3. sample places on the rubber slab, and 4. to open a diameter be the 45mm circular hole on the top in the image acquisition chamber.
B, select the CANNON-PowerShotA70 digital camera for use 5., camera lens passes in the image acquisition chamber 4. tip circle hole.
5. c, digital camera adopt with the 5. subsidiary USB2.0 data line of digital camera between 7. with computing machine and 6. are connected.
(2) pork colour computing machine grading software
Pork colour computing machine grading software is made up of image input control module, image segmentation and identification module, color of image characteristic parameter extraction module, pork colour grade output module, and this software development language is Visual C ++6.0.
A, image input control module are finished in conjunction with Canon Digital Camera SDK6.0.1 (Canon DC-SDK6.0.1) exploitation, and this module can be opened digital camera 5. camera lens, automatic shooting sample coloured image 3. automatically.
B, image segmentation and identification module are used for that coloured image to input carries out denoising, goes background, edge extracting, the validity feature color extracting zone that finally obtains the pork image.
C, color of image characteristic parameter extraction module are used for the color characteristic parameter of effective color extracting extracted region images that image segmentation and identification module are obtained, comprise red R, green G, blue B, color H, saturation degree S, brightness V.
D, pork colour grade output module are used to call pork colour grade model (pork colour grade G=4.62+6.63*S-10.20*V), and output pork colour rank has realized the classification of pork colour.
The installation of system software to the requirement of system hardware and software is:
● CPU is more than the above hard disk 20G of the above internal memory 128MB of Pentium II
● Windows98 or above windows operating system
As the core support, finally realized the classification of pork colour computer intelligence by above hardware device and software.Attached: the former code of program
One, image input control module (control digital camera)
LRESULT CRelCtrlDlg∷WindowProc(UINT message,WPARAM wParam,LPARAM 1Param)  {      ∥TODO:Add your specialized code here and/or call the base class        <!-- SIPO <DP n="2"> -->        <dp n="d2"/>    cdError       err;    BOOL          fRes;    CProgress CProg;    char      szSavePath[MAX_PATH];    cdUInt32  NumData;    if(message==g_ReleaseOnMessage)    {        /*UI is locked so that information may not be changed.*/        err=CDLockUI(m_hSource);        if(GETERRORID(err)!=cdOK)        {            goto camerr;        }        /*It sets up so that a complete message may be disregarded.*/        m_fProgramRelease=TRUE;        /*A special camera ends a view finder.*/        if(m_RelControlCap&cdRELEASE_CONTROL_CAP_ABORT_VIEWFINDER)        {            if(m_fVFEnd)            {                /*A view finder is ended.*/                err=CDTermViewfinder(m_hSource);                if(GETERRORID(err)!=cdOK)                {                    goto camerr;                }                /*A thread is ended.*/                m_fVFEnd=FALSE;                g_CpVFThread->ResumeThread();                WaitForSingleObject(g_CpVFThread->m_hThread,INFINITE);                Invalidate();                UpdateWindow();            }        }        /*A photograph is taken.*/        NumData=0;        err=CDRelease(m_hSource,FALSE,NULL,NULL,cdPROG_NO_REPORT,&NumData);        if(GETERRORID(err)!=cdOK)        {            goto camerr;        }        /*The directory to save is acquired.*/        <!-- SIPO <DP n="3"> -->        <dp n="d3"/>  GetSavePath(szSavePath,MAX_PATH);  /*The photoed picture is saved.*/  fRes=CProg.GetReleaseData(m_hSource,NumData,szSavePath,m_fileName);  if(!fRes)  {      goto apierr;  }  else if(GETERRORID(CProg.m_LastErr)==cdOPERATION_CANCELLED)  {      m_fProgramRelease=FALSE;      CDUnlockUI(m_hSource);      return    TRUE;  }  else if(GETERRORID(CProg.m_LastErr)!=cdOK)  {      err=CProg.m LastErr;      goto camerr;  }  /*The lock of UI is canceled.*/  err=CDUnlockUI(m_hSource);  if(GETERRORID(err)!=cdOK)  {      goto camerr;  }  /*It sets up so that a complete message may be received.*/  m_fProgramRelease=FALSE;  return    TRUE;}else if(message==g_ReleaseCompleteMessage){  if(m_fProgramRelease==FALSE)  {      /*UI is locked so that information may not be changed.*/      err=CDLockUI(m_hSource);      if(GETERRORID(err)!=cdOK)      {          goto camerr;      }      /*The directory to save is acquired.*/      GetSavePath(szSavePath,MAX_PATH);      NumData=(cdUInt32)wParam;      /*The photoed picture is saved.*/      fRes=CProg.GetReleaseData(m_hSource,NumData,szSavePath,m_fileName);      if(!fRes)        <!-- SIPO <DP n="4"> -->        <dp n="d4"/>      {          goto apierr;      }      else if(GETERRORID(CProg.m_LastErr)==cdOPERATION_CANCELLED)      {          m_fProgramRelease=FALSE;          CDUnlockUI(m_hSource);          return    TRUE;      }      else if(GETERRORID(CProg.m_LastErr)!=cdOK)      {          err=CProg.m_LastErr;          goto camerr;      }      /*The lock of UI is canceled.*/      err=CDUnlockUI(m_hSource);      if(GETERRORID(err)!=cdOK)      {          goto camerr;      }      return    TRUE;  }}else if(message==g_AbortPCEVF){  if(m_fVFEnd)  {      /*A view finder is ended.*/      err=CDTermViewfinder(m_hSource);      if(GETERRORID(err)!=cdOK)      {          goto camerr;      }      /*A thread is ended.*/      m_fVFEnd=FALSE;      g_CpVFThread->ResumeThread();      WaitForSingleObject(g_CpVFThread->m_hThread,INFINITE);      Invalidate();      UpdateWindow();  }  return TRUE;}        <!-- SIPO <DP n="5"> -->        <dp n="d5"/>return CDialog∷WindowProc(message,wParam,1Param);  camerr:  char szErrStr[256];  wsprintf(szErrStr,″ErrorCode=0x%08X″,err);  MessageBox(szErrStr);  CDUnlockUI(m_hSource);  m_fProgramRelease=FALSE;  return    FALSE;apierr:  MessageBox(″API Error″);  CDUnlockUI(m_hSource);  m_fProgramRelease=FALSE;  return    FALSE;}void CRelCtrlDlg∷OnDestroy(){  CDialog∷OnDestroy();  ∥TODO:Add your specialized code here and/or call the base class  cdError     err;  char   szErrStr[256];  /*End processing of CDSDK is performed.*/  err=CDFinishSDK();  if(GETERRORID(err)!=cdOK)  {      wsprintf(szErrStr,″ErrorCode=0x%08X″,err);      MessageBox(szErrStr);  }}void CRelCtrlDlg∷SetPicQuery(){  UpdateData();  cdError              err1,err2;  CString              CAddStr;  m_CInfoString=″″;  /*Quality of image,image size,and the average size of a picture file are acquired.*/  cdCompQuality       Quality;  cdImageSize         Size;  ∥  ()  switch(m_Camsize){  case 0:       Size=cdIMAGE_SIZE_SMALL;        <!-- SIPO <DP n="6"> -->        <dp n="d6"/>   break;case 1:   Size=cdIMAGE_SIZE_MEDIUM1;   break;case 2:   Size=cdIMAGE_SIZE_MEDIUM2;   break;case 3:   Size=cdIMAGE_SIZE_LARGE;   break;}switch(m_CamQuery){case 0:   Quality=cdCOMP_QUALITY_NORMAL;   break;case 1:   Quality=cdCOMP_QUALITY_FINE;   break;case 2:   Quality=cdCOMP_QUALITY_SUPERFINE;   break;}err1=CDSetImageFormatAttribute(m_hSource,Quality,Size);m_CamMode=17;cdShootingMode        ShootingMode;switch(m_CamMode){case 0:   ShootingMode=cdSHOOTING_MODE_AUTO;   break;case 1:   ShootingMode=cdSHOOTING_MODE_PROGRAM;   break;case 2:   ShootingMode=cdSHOOTING_MODE_TV;   break;case 3:   ShootingMode=cdSHOOTING_MODE_AV;   break;case 4:   ShootingMode=cdSHOOTING_MODE_MANUAL;   break;case 5:        <!-- SIPO <DP n="7"> -->        <dp n="d7"/>   ShootingMode=cdSHOOTING_MODE_A_DEP;   break;case 6:   ShootingMode=cdSHOOTING_MODE_M_DEP;   break;case 7:   ShootingMode=cdSHOOTING_MODE_BULB;   break;case 8:   ShootingMode=cdSHOOTING_MODE_MANUAL_2;   break;case 9:   ShootingMode=cdSHOOTING_MODE_FAR_SCENE;   break;case 10:   ShootingMode=cdSHOOTING_MODE_FAST_SHUTTER;   break;case 11:   ShootingMode=cdSHOOTING_MODE_SLOW_SHUTTER;   break;case 12:   ShootingMode=cdSHOOTING_MODE_NIGHT_SCENE;   break;case 13:   ShootingMode=cdSHOOTING_MODE_GRAY_SCALE;   break;case 14:   ShootingMode=cdSHOOTING_MODE_SEPIA;   break;case 15:   ShootingMode=cdSHOOTING_MODE_PORTRAIT;   break;case 16:   ShootingMode=cdSHOOTING_MODE_SPOT;   break;case 17:   ShootingMode=cdSHOOTING_MODE_MACRO;   break;case 18:   ShootingMode=cdSHOOTING_MODE_BW;   break;case 19:   ShootingMode=cdSHOOTING_MODE_PANFOCUS;   break;        <!-- SIPO <DP n="8"> -->        <dp n="d8"/>  case 20:       ShootingMode=cdSHOOTING_MODE_VIVID;       break;  case 21:       ShootingMode=cdSHOOTING_MODE_NEUTRAL;       break;  case 22:       ShootingMode=cdSHOOTING_MODE_INVALID;       break;  }  err2=CDSetShootingMode(m_hSource,ShootingMode);  if(GETERRORID(err1)==cdOK/*&& GETERRORID(err2)==cdOK*/)      GetCameraInformation();  else      MessageBox(″Set Error″);}void CRelCtrlDlg∷SetCamMode(){  cdError       err;  err=CDLockUI(m_hSource);  if(GETERRORID(err)!=cdOK)  {      goto camerr;  }  err=SetReleaseState();  if(GETERRORID(err)!=cdOK)  {      goto camerr;  }  /*The lock of UI is canceled.*/  err=CDUnlockUI(m_hSource);  if(GETERRORID(err)!=cdOK)  {      goto camerr;  }  return;        <!-- SIPO <DP n="9"> -->        <dp n="d9"/>camerr.  char szErrStr[256];  wsprintf(szErrStr,″ErrorCode=0x%08X″,err);  MessageBox(szErrStr);  CDUnlockUI(m_hSource);}
Two, image segmentation and identification module (image in the internal memory is converted into grayscale mode).
BOOL CJiSuan ∷ ChangtoGrid () { int w=m_dib.GetDIBWidth (); Int h=m_dib.GetDIBHeight (); For (int i=0; I<w; I++) for (int j=O; J<h; J++) { m_dib.SetPixel (i, j, RGB (255,255,255)); If (i==10) i=w-10; If (j==10) j=h-10; For (i=0; I<w; I++) for (int j=0; J<h; J++) { DWORD rgb=GetPixel (i, j); Int Y=m_dib.FindR (rgb)-m_dib.FindB (rgb); Int y=m_dib.FindR (rgb)-m_dib.FindG (rgb); If (Y>255) Y=255; If (Y<0) Y=0; If (y>255) y=255; If (y<0) y=0; Y=Y<y? Y:y; SetPixel (i, j, RGB (Y, Y, Y)); Int yuZhi=FindAllYu (); For (i=0; I<w; I++) for (int j=0; J<h; J++)<!--SIPO<DP n=" 10 "〉--〉<dp n=" d10 "/if (m_dib.FindR (GetPixel (i, j)) { ∥ background colour SetPixel (i<=yuZhi), j, RGB (255,255,255)); For (i=0; I<w; I++) for (int j=0; J<h; J++) if (GetPixel (i, j)==RGB (255,255,255)) m_dib.SetPixel (i, j, RGB (255,255,255));=NULL) delete m_pDIBData; M_pDIBData=(BYTE*) new char[m_dib.GetSize ()]; Memcpy (m_pDIBData, m_dib.m_pDIBData, m_dib.GetSize ()); For (i=0; I<w; I++) for (int j=0; J<h; J++) { DWORD rgb=GetPixel (i, j); Int Y=int (1.368612+0.441683*m_dib.FindR (rgb)+0.390386*m_dib.FindG (rgb)+0.211932*m_dib.FindB (rgb)); If (Y>255) Y=255; If (Y<0) Y=0; SetPixel (i, j, RGB (Y, Y, Y)); Return true; }
Three, color of image characteristic parameter extraction module (below be handle threshold calculations)
#ifndef_CThreshold_H_#define_CThreshold_H_ ∥ calculating optimum threshold value class CThreshold{<!--SIPO<DP n=" 11 "〉--〉<dp n=" d11 "/enum{N=256}; Public:CThreshold () { }~CThreshold () { } void set (int g[], int a[], int total=N); Double GetThreshold (); Protected:double GetOneThreshold (intt); ∥ calculates a threshold value void GetUT (); ∥ computational picture average gray private:int gray[N], n[N], m_total, m_ntotal; Double m_ut, m_threshold; ∥ ganmma controller mean value }; #endif ∥ _ CThreshold_H_#include " stdafx.h " #include " Threshold.h " #define SQR (x) (x) * (x) void CThreshold ∷ set (int g[], iht a[], int total) { m_total=total; For (int i=0; I<m_total; I++) n[i]=a[i]; Gray[i]=g[i]; GetUT (); Void CThreshold ∷ GetUT () { int nTotal=0; M_ut=0.0; M_ntotal=0; For (int i=0; I<m_total; I++) nTotal+=n[i]; For (i=0; I<m_total; I++) m_ut+=1.0*gray[i] * n[i]/nTotal; M_ntotal+=n[i]; Double CThreshold ∷ GetOneThreshold (int t)<!--SIPO<DP n=" 12 "〉--〉<dp n=" d12 "/{ pixel grey scale mean value and the variance of ∥ compute classes C1, probability of happening double u1=0.0, s1=0.0, w1=0.0; Int total=0; For (int i=0; I<t; I++) total+=n[i]; For (i=0; I<t; I++) u1+=1.0*gray[i] * n[i]/total; W1+=1.0*n[i]/m_ntotal; For (i=0; I<t; I++) s1+=1.0*SQR (gray[i]-u1) * n[i]/total; The pixel grey scale mean value of ∥ compute classes C2 and variance double u2=0.0, s2=0.0, w2=0.0; Total=0; For (i=t; I<m_total; I++) total+=n[i]; For (i=t; I<m_total; I++) u2+=1.0*gray[i] * n[i]/total; W2+=1.0*n[i]/m_ntotal; For (i=t; I<m_total; I++) s2+=1.0*SQR (gray[i]-u2) * n[i]/total; Double sw2=w1*s1+w2*s2; Double sb2=w1*SQR (u1-m_ut)+w2*SQR (u2-m_ut); Return sb2/sw2; Double CThreshold ∷ GetThreshold () { m_threshold=0; Double nSepMax=0.0; ∥ asks value for (the int t=0 of degree of separation maximum; T<m_total; T++) double temp=GetOneThreshold (gray[t]); The if ({ nSepMax=temp of temp>nSepMax); M_threshold=gray[t]; Return m_threshold; With recursion method remove color value void CJiSuan ∷ FillGreenColor (int x, int y)<!--SIPO<DP n=" 13 "〉--〉<dp n=" d13 "/if (x<0 ‖ x>m_dib.GetDIBWidth () ‖ y<0 ‖ y>m_dib.GetDIBHeight ()) return; If (GetPixel (x, y)==RGB (255,0,255)) SetPixel (x, y, RGB (255,255,255)); Else return; FillGreenColor (x+1, y); FillGreenColor (x-1, y); FillGreenColor (x, y-1); FillGreenColor (x, y+1); Image bit map pixel operation class ∥ DIB.cpp:implementation file ∥ #include " stdafx.h " #include " DIB.h " #ifdef_DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[]=_ FILE_; #endif/ // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // ∥ CDIBCDIB ∷ CDIB () { m_pBMI=NULL; M_pDIBData=NULL; M_pDIBData2=NULL;=NULL) delete m_pBMI;=NULL) delete m_pDIBData;=NULL) delete m_pDIBData2; }<!--SIPO<DP n=" 14 "〉--〉<dp n=" d14 "/BOOL CDIB ∷ LoadFromFile (LPCTSTR lpszFileName) { CFile file; BITMAPINFO*pBMI=NULL; BYTE*pDIBData=NULL; If (! File.Open (lpszFileName, CFile ∷ modeRead|CFile ∷ typeBinary)) { AfxMessageBox (" file of not opening "); Return false; BITMAPFILEHEADER bfh; If (file.Read (﹠amp; Amp; Bfh, sizeof (bfh))!=sizeof (bfh)) { AfxMessageBox (" reading document lending "); Return false;=0x4d42) { AfxMessageBox (" not being the bmp file "); Return false; BITMAPINFOHEADER bih; If (file.Read (﹠amp; Amp; Bih, sizeof (bih))!=sizeof (bih)) { AfxMessageBox (" reading document lending "); Return false;=24) { AfxMessageBox (" not being 24 bitmap sheets "); Return false; PBMI=(BITMAPINFO*) new char[sizeof (BITMAPINFOHEADER)]; If (! PBMI) { AfxMessageBox (" storage allocation is made mistakes "); Return false; Memcpy (pBMI , ﹠amp; Amp; Bih, sizeof (BITMAPINFOHEADER));<!--SIPO<DP n=" 15 "〉--〉<dp n=" d15 "/DWORD dataBytes=bfh.bfSize-bfh.bfOffBits; M_size=dataBytes; PDIBData=(BYTE*) new char[dataBytes]; If (! PDIBData) { AfxMessageBox (" storage allocation is made mistakes "); Delete pBMI; Return false; If (file.ReadHuge (pDIBData, dataBytes)!=dataBytes) { AfxMessageBox (" reading document lending "); Delete pBMI; Delete pDIBData; Return false; File.Close ();=NULL) delete m_pBMI; M_pBMI=pBMI;=NULL) delete m_pDIBData; M_pDIBData=pDIBData; Return true; Void CDIB ∷ ShowDIB (CDC*pDC, int nLeft, int nTop, int nWidth, int nHeight) { pDC->SetStretchBltMode (COLORONCOLOR); StretchDIBits (pDC->GetSafeHdc (), nLeft, nTop, nWidth, nHeight, 0,0, GetDIBWidth (), GetDIBHeight (), m_pDIBData, m_pBMI, DIB_RGB_COLORS, SRCCOPY); } // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // ∥ CDIB message handlersDWORD CDIB ∷ GetPixel (int x, int y)<!--SIPO<DP n=" 16 "〉--〉<dp n=" d16 "/{ AfxMessageBox (" does not have load image to if (m_pDIBData==NULL)! "); Return-1; The byte number of ∥ delegation.Return dib_GetColor (m_pDIBData+m_nPitch*y+x+x+x); Void CDIB ∷ SetPixel (int x, int y, DWORD c) { ∥ dib_SetColor ((BYTE*) (), c); The byte number of ∥ delegation.Dib_SetColor ((BYTE*) (m_pDIBData+m_nPitch*y+x+x+x), c); Void CDIB ∷ SaveImage (LPCTSTR lpszName) { BITMAPFILEHEADER bfh; Memset (﹠amp; Amp; Bfh, 0, sizeof (BITMAPFILEHEADER)); BITMAPINFOHEADER bi; Bi.biSize=sizeof (BITMAPINFOHEADER); Bi.biWidth=GetDIBWidth (); Bi.biHeight=GetDIBHeight (); Bi.biPlanes=1; Bi.biBitCount=24; ∥ m_dib.m_nPitch*m_dib.GetDIBHeight (); Bi.biCompression=BI_RGB; Bi.biSizeImage=0; Bi.biXPelsPerMeter=0; Bi.biYPelsPerMeter=0; Bi.biClrUsed=0; Bi.biClrImportant=0; If (bi.biSizeImage==0) bi.biSizeImage=((((bi.biWidth*bi.biBitCount)+31) ﹠amp; Amp;~31)/8) * bi.biHeight; Bfh.bfType=((WORD) ' B ') ' M '<<8; Bfh.bfSize=sizeof (BITMAPFILEHEADER)+sizeof (BITMAPINFOHEADER)+bi.biSizeImage; Bfh.bfOffBits=sizeof (BITMAPFILEHEADER)+sizeof (BITMAPINFOHEADER);<!--SIPO<DP n=" 17 "〉--〉<dp n=" d17 "/HANDLE hFile=CreateFile (lpszName, GENERIC_WRITE, 0,0, CREATE_ALWAYS, 0,0); DWORD dw; WriteFile (hFile , ﹠amp; Amp; Bfh, sizeof (BITMAPFILEHEADER) , ﹠amp; Amp; Dw, NULL); WriteFile (hFile , ﹠amp; Amp; Bi, sizeof (BITMAPINFOHEADER) , ﹠amp; Amp; Dw, NULL); WriteFile (hFile, m_pDIBData, bi.biSizeImage , ﹠amp; Amp; Dw, NULL); CloseHandle (hFile); Int CDIB ∷ FindB (DWORD rgb) { DWORD b=rgb ﹠amp; Amp; 0x000000ff; Return int (b); { ∥ searches rgb color DWORD r=rgb ﹠amp to int CDIB ∷ FindR (DWORD rgb); Amp; 0x00ff0000; R=r/ (16*16*16*16); Return int (r); Int CDIB ∷ FindG (DWORD rgb) { DWORD g=rgb ﹠amp; Amp; 0x0000ff00; G=g/ (16*16); Return int (g); DWORD CDIB ∷ GetSize () { return m_size; }
Four, pork colour grade output module (picture format conversion operation class)
#include″stdafx.h″#include″Picture.h″        <!-- SIPO <DP n="18"> -->        <dp n="d18"/>  #ifdet_DEBUG  #define new DEBUG_NEW  #undef THIS_FILE  static char THIS_FILE[]=_FILE_;  #endif  #define HIMETRIC_INCH 2540  #define ERROR_TITLE″CPicture Error″∥Error Title(Related To This Class)...  ∥-----------------------------------------------------------------------------  ∥Does:Constructor-Create a New CPicture Object To Hold Pictre Data  ∥~~~~  ∥  ∥-----------------------------------------------------------------------------  CPicture∷CPicture()  ∥=============================================================================  {      m_IPicture=NULL;      m_Height=0;      m_Weight=0;      m_Width=0;  }  ∥-----------------------------------------------------------------------------  ∥Does:Destructor-Free Data And Information From The CPicture Object  ∥~~~~  ∥  ∥-----------------------------------------------------------------------------  CPicture∷~CPicture()  ∥=============================================================================  {      if(m_IPicture!=NULL)FreePictureData();∥Important-Avoid Leaks...  }  void CPicture∷FreePictureData()  ∥=============================================================================  {      if(m_IPicture !=NULL)          {          m_IPicture->Release();          m_IPicture=NULL;          m_Height=0;        <!-- SIPO <DP n="19"> -->        <dp n="d19"/>          m_Weight=0;          m_Width=0;          }  }  ∥-----------------------------------------------------------------------------  ∥Does:    Open a Resource And Load It Into IPicture(Interface)  ∥~~~~  (.BMP.DIB.EMF.GIF.ICO.JPG.WMF)  ∥  ∥Note:    When Adding a Bitmap Resource It Would Automatically Show On″Bitmap″  ∥~~~~  This NOT Good Coz We Need To Load It From a Custom Resource″BMP″  ∥          To Add a Custom Rresource:Import Resource->Open As->Custom  ∥          (Both.BMP And.DIB Should Be Found Under″BMP″)  ∥  ∥InPut:   ResourceName-As a UINT Defined(Example:IDR_PICTURE_RESOURCE)  ∥~~~~~ ResourceType-Type Name(Example:″JPG″)  ∥  ∥OutPut:TRUE If Succeeded...  ∥~~~~~~  ∥-----------------------------------------------------------------------------  BOOL CPicture∷Load(UINT ResourceName,LPCSTR ResourceType)  ∥=============================================================================  {      BOOL bResult=FALSE;      HGLOBAL         hGlobal=NULL;      HRSRC        hSource=NULL;      LPVOID       lpVoid =NULL;      int          nSize  =0;      if(m_IPicture!=NULL)FreePictureData();∥Important-Avoid Leaks...      hSource=FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(ResourceName),ResourceType);      if(hSource==NULL)          {          HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;          MessageBoxEx(hWnd,″FindResource()Failed\t″,ERROR_TTTLE,MB_OK|MB_ICONSTOP,LANG_ENGLISH);          return(FALSE);          }        <!-- SIPO <DP n="20"> -->        <dp n="d20"/>    hGlobal=LoadResource(AfxGetResourceHandle(),hSource);    if(hGlobal==NULL)        {        HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;        MessageBoxEx(hWnd,″LoadResource()Failed\t″,ERROR_TITLE,MB_OK MB_ICONSTOP,LANG_ENGLISH);        return(FALSE);        }        lpVoid=LockResource(hGlobal);        if(lpVoid==NULL)            {            HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;            MessageBoxEx(hWnd,″LockResource()Failed\t″,ERROR_TITLE,MB_OK MB_ICONSTOP,LANG_ENGLISH);            return(FALSE);            }        nSize=(UINT)SizeofResource(AfxGetResourceHandle(),hSource);        if(LoadPictureData((BYTE*)hGlobal,nSize))bResult=TRUE;        UnlockResource(hGlobal);∥16Bit Windows Needs This        FreeResource(hGlobal);∥16Bit Windows Needs This(32Bit-Automatic Release)        m_Weight=nSize;∥Update Picture Size Info...        if(m_IPicture!=NULL)∥Do Not Try To Read From Memory That Is Not Exist...            {            m_IPicture->get_Height(&m_Height);            m_IPicture->get_Width(&m_Width);            ∥Calculate Its Size On a″Standard″(96 DPI)Device Context            m_Height=MulDiv(m_Height,96,HIMETRIC_INCH);            m_Width=MulDiv(m_Width,96,HIMETRIC_INCH);            }        else∥Picture Data Is Not a Known Picture Type            {            m_Height=0;            m_Width=0;            bResult=FALSE;            }        return(bResult);    }        <!-- SIPO <DP n="21"> -->        <dp n="d21"/>  ∥-----------------------------------------------------------------------------  ∥Does:    Open a File And Load It Into IPicture(Intefface)  ∥~~~~  (.BMP.DIB.EMF.GIF.ICO.JPG.WMF)  ∥  ∥InPut:   sFilePathName-Path And FileName Target To Save  ∥~~~~~  ∥  ∥OutPut:TRUE If Succeeded...  ∥~~~~~~  ∥-----------------------------------------------------------------------------  BOOL CPicture∷Load(CString sFilePathName)  ∥============================================================================  {      BOOL bResult=FALSE;      CFile PictureFile;      CFileException e;      int  nSize=0;      if(m_IPicture!=NULL)FreePictureData();∥Important-Avoid Leaks...      if(PictureFile.Open(sFilePathName,CFile∷modeRead|CFile∷typeBinary,&e))            {            nSize=PictureFile.GetLength();            BYTE*pBuffer=new BYTE[nSize];            if(PictureFile.Read(pBufier,nSize)>0)                  {                  if(LoadPictureData(pBufier,nSize))bResult=TRUE;                  }            PictureFile.Close();            delete[]pBuffer;            }      else∥Open Failed...          {          TCHAR szCause[255];          e.GetErrorMessage(szCause,255,NULL);          CString str=szCause;          if(str.Find(″sharing″)<0)          {              HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;              MessageBoxEx(hWnd,szCause,ERROR_TITLE,MB_OK|MB_ICONSTOP,LANG_ENGLISH);        <!-- SIPO <DP n="22"> -->        <dp n="d22"/>          }          bResult=FALSE;           }         m_Weight=nSize;∥Update Picture Size Info...        if(m_IPicture!=NULL)∥Do Not Try To Read From Memory That Is Not Exist...             {             m_IPicture->get_Height(&m_Height);             m_IPicture->get_Width(&m_Width);             ∥Calculate Its Size On a″Standard″(96 DPI)Device Context             m_Height=MulDiv(m_Height,96,HIMETRIC_INCH);             m_Width=MulDiv(m_Width,96,HIMETRIC_INCH);             }         else∥Picture Data Is Not a Known Picture Type             {             m_Height=0;             m_Width=0;             bResult=FALSE;             }         return(bResult);     }     BOOL CPicture∷LoadPictureData(BYTE*pBuffer,int nSize)     ∥=============================================================================    {        BOOL bResult=FALSE;        HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,nSize);        if(hGlobal==NULL)             {             HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;             MessageBoxEx(hWnd,″Can not allocate enough memory\t″,ERROR_TITLE,MB_OK |MB_ICONSTOP,LANG_ENGLISH);             return(FALSE);             }             void*pData=GlobalLock(hGlobal);             memcpy(pData,pBuffer,nSize);             GlobalUnlock(hGlobal);             IStream*pStream=NULL;        <!-- SIPO <DP n="23"> -->        <dp n="d23"/>      if(CreateStreamOnHGlobal(hGlobal,TRUE,&pStream)==S_OK)          {          HRESULT hr;          if((hr=OleLoadPicture(pStream,nSize,FALSE,IID_IPicture,(LPVOID*)&m_IPicture))==E_NOINTERFACE)              {              HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;              MessageBoxEx(hWnd,″IPicture interface is not supported\t″,ERROR_TITLE,MB_OK|MB_ICONSTOP,LANG_ENGLISH);              return(FALSE);              }          else∥S_OK              {              pStream->Release();              pStream=NULL;              bResult=TRUE;              }          }      FreeResource(hGlobal);∥16Bit Windows Needs This(32Bit-Automatic Release)      return(bResult);  }  BOOL CPicture∷Show(CDC*pDC,CRect DrawRect)  ∥=============================================================================  {      if(pDC==NULL‖m_IPicture==NULL)return FALSE;      long Width=0;      long Height=0;      m_IPicture->get_Width(&Width);      m_IPicture->get_Height(&Height);      HRESULT hrP=NULL;      hrP=m_IPicture->Render(pDC->m_hDC,                         DrawRect.left,                    ∥Left                         DrawRect.top,                     ∥Top                         DrawRect.right-DrawRect.left,∥Right                         DrawRect.bottom-DrawRect.top,∥Bottom        <!-- SIPO <DP n="24"> -->        <dp n="d24"/>                        0,                        Height,                        Width,                        -Height,                        &DrawRect);      if(SUCCEEDED(hrP))return(TRUE);      HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;      MessageBoxEx(hWnd,″Can not allocate enough memory\t″,ERROR_TITLE,MB_OK|MB_ICONSTOP,LANG_ENGLISH);      return(FALSE);  }  ∥-----------------------------------------------------------------------------  ∥Does:    Draw The Loaded Picture Direct To The Client DC  ∥~~~~  ∥  ∥Note:    Bigger OR Smaller Dimentions Than The Original Picture Size  ∥~~~~  Will Draw The Picture Streached To Its New Given Dimentions...  ∥  ∥InPut:   pDC-Given DC To Draw On  ∥~~~~~ LeftTop-Opening Point To Start Drawing(Left,Top)  ∥           WidthHeight-Dimentions Of The Picture To Draw(Width,Height)  ∥           MagnifyX-Magnify Pixel Width,0=Default(No Magnify)  ∥           MagnifyY-Magnify Pixel Height,0=Default(No Magnify)  ∥  ∥OutPut:TRUE If Succeeded...  ∥~~~~~~  ∥-----------------------------------------------------------------------------  BOOL CPicture∷Show(CDC*pDC,CPoint LeftTop,CPoint WidthHeight,int MagnifyX,intMagnifyY)  ∥=============================================================================  {      if(pDC==NULL‖m_IPicture==NULL)return FALSE;      long Width=0;      long Height=0;      m_IPicture->get_Width(&Width);      m_IPicture->get_Height(&Height);      if(MagnifyX==NULL)MagnifyX=0;      if(MagnifyY==NULL)MagnifyY=0;      MagnifyX=int(MulDiv(Width,pDC->GetDeviceCaps(LOGPIXELSX),HIMETRIC_INCH)*        <!-- SIPO <DP n="25"> -->        <dp n="d25"/>MagnifyX);      MagnifyY=int(MulDiv(Height,pDC->GetDeviceCaps(LOGPIXELSY),HIMETRIC_INCH)*Magnifyy);      CRect DrawRect(LeftTop.x,LeftTop.y,MagnifyX,Magnifyy);      HRESULT hrP=NULL;    hrp=m_IPicture->Render(pDC->m_hDC,                         LeftTop.x,             ∥Left                         LeftTop.y,             ∥Top                         WidthHeight.x+MagnifyX,∥Width                         WidthHeight.y+MagnifyY,∥Height                         0,                         Height,                         Width,                         -Height,                         &DrawRect);      if(SUCCEEDED(hrP))return(TRUE);      HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;      MessageBoxEx(hWnd,″Can not allocate enough memory\t″,ERROR_TITLE,MB_OK|MB_ICONSTOP,LANG_ENGLISH);      return(FALSE);  }  ∥-----------------------------------------------------------------------------  ∥Does:    Saves The Picture That Is Stored In The IPicture Object As a Bitmap  ∥~~~~  (Converts From Any Known Picture Type To a Bitmap/Icon File)  ∥  ∥InPut:   sFilePathName-Path And FileName Target To Save  ∥~~~~~  ∥  ∥OutPut:TRUE If Succeeded...  ∥~~~~~~  ∥-----------------------------------------------------------------------------  BOOL CPicture∷SaveAsBitmap(CString sFilePathName)  ∥=============================================================================  {      BOOL bResult=FALSE;      ILockBytes*Buffer=0;      IStorage  *pStorage=0;        <!-- SIPO <DP n="26"> -->        <dp n="d26"/>      IStream   *FileStream=0;      BYTE       *BufferBytes;      STATSTG         BytesStatistics;      DWORD       OutData;      long    OutStream;      CFile       BitmapFile;CFileException e;      double      SkipFloat=0;      DWORD       ByteSkip=0;      _ULARGE_INTEGER RealData;      CreateILockBytesOnHGlobal(NULL,TRUE,&Buffer);∥Create ILockBytes Buffer      HRESULT hr=∷StgCreateDocfileOnILockBytes(Buffer,                    STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE,0,&pStorage);      hr=pStorage->CreateStream(L″PICTURE″,           STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE,0,0,&FileStream);      m_IPicture->SaveAsFile(FileStream,TRUE,&OutStream);∥Copy Data Stream      FileStream->Release();      pStorage->Release();      Buffer->Flush();  ∥m_IPicture->SaveAsFile(      ∥Get Statistics For Final Size Of Byte Array      Buffer->Stat(&BytesStatistics,STATFLAG_NONAME);      ∥Cut UnNeeded Data Coming From SaveAsFile()(Leave Only″Pure″Picture Data)      SkipFloat=(double(OutStream)/512);∥Must Be In a 512 Blocks...      if(SkipFloat>DWORD(SkipFloat))ByteSkip=(DWORD)SkipFloat+1;      else ByteSkip=(DWORD)SkipFloat;      ByteSkip=ByteSkip*512;∥Must Be In a 512 Blocks...      ∥Find Difference Between The Two Values      ByteSkip=(DWORD)(BytesStatistics.cbSize.QuadPart-ByteSkip);      ∥Allocate Only The″Pure″Picture Data      RealData.LowPart=0;      RealData.HighPart=0;      RealData.QuadPart=ByteSkip;      BufferBytes=(BYTE*)malloc(OutStream);      if(BufferBytes==NULL)          {          Buffer->Release();        <!-- SIPO <DP n="27"> -->        <dp n="d27"/>          HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;          MessageBoxEx(hWnd,″Can not allocate enough memory\t″,ERROR_TITLE,MB_OK|MB_ICONSTOP,LANG_ENGLISH);          }    Buffer->ReadAt(RealData,BufferBytes,OutStream,&OutData);    if(BitmapFile.Open(sFilePathName,CFile∷typeBinary|CFile∷modeCreate|CFile∷modeWrite,&e))          {          BitmapFile.Write(BufferBytes,OutData);          BitmapFile.Close();          bResult=TRUE;          }      else∥Write File Failed...          {          TCHAR szCause[255];          e.GetErrorMessage(szCause,255,NULL);          HWND hWnd=AfxGetApp()->GetMainWnd()->m_hWnd;        MessageBoxEx(hWnd,szCause,ERROR_TITLE,MB_OK|MB_ICONSTOP,LANG_ENGLISH);          bResult=FALSE;          }      Buffer->Release();      free(BufferBytes);      return(bResult);  }  BOOL CPicture∷ShowBitmapResource(CDC*pDC,const int BMPResource,CPoint LeftTop)  ∥=============================================================================  {      if(pDC==NULL)return(FALSE);      CBitmap BMP;      if(BMP.LoadBitmap(BMPResource))          {          ∥Get Bitmap Details          BITMAP BMPInfo;          BMP.GetBitmap(&BMPInfo);          ∥Create An In-Memory DC Compatible With The Display DC We R Gonna Paint On          CDC DCMemory;          DCMemory.CreateCompatibleDC(pDC);          ∥Select The Bitmap Into The In-Memory DC          CBitmap*pOldBitmap=DCMemory.SelectObject(&BMP);          ∥Copy Bits From The In-Memory DC Into The On-Screen DC          pDC->BitBlt(LeftTop.x,LeftTop.y,BMPInfo.bmWidth,BMPInfo.bmHeight,&DCMemory,0,0,SRCCOPY);        <!-- SIPO <DP n="28"> -->        <dp n="d28"/>          DCMemory.SelectObject(pOldBitmap);∥(As Shown In MSDN Example...)          }      else          {          TRACE0(″ERROR:Can Not Find The Bitmap Resource\n″);          return(FALSE);          }      return(TRUE);  }  ∥-----------------------------------------------------------------------------  ∥Does:    Get The Original Picture Pixel Size(Ignor What Current DC Is Using)  ∥~~~~  Pointer To a Device Context Is Needed For Pixel Calculation,  ∥  ∥          Also Updates The Class′s Height And Width Properties,  ∥          (Coz Till Now We Had No Device Context To Work With...96 DPI Assumed)  ∥  ∥InPut:   The Client DC(Needed To Check The Size Of The Pixels)  ∥~~~~~  ∥  ∥OutPut:TRUE If Succeeded...  ∥~~~~~~  ∥-----------------------------------------------------------------------------  BOOL CPicture∷UpdateSizeOnDC(CDC*pDC)  ∥======================================================================  {      if(pDC==NULL‖m_IPicture==NULL){m_Height=0;m_Width=0;return(FALSE);};      m_IPicture->get_Height(&m_Height);      m_IPicture->get_Width(&m_Width);    ∥Get Current DPI-Dot Per Inch      int CurrentDPI_X=pDC->GetDeviceCaps(LOGPIXELSX);      int CurrentDPI_Y=pDC->GetDeviceCaps(LOGPIXELSY);    ∥Use a″Standard″Print(When Printing)      if(pDC->IsPrinting())          {          CurrentDPI_X=96;          CurrentDPI_Y=96;          }      m_Height=MulDiv(m_Height,CurrentDPI_Y,HIMETRIC_INCH);      m_Width =MulDiv(m_Width,CurrentDPI_X,HIMETRIC_INCH);      return(TRUE);  }

Claims (1)

1, a kind of pork colour grading instrument device comprises image capture device and pork colour grading software, it is characterized in that:
(1) image acquisition equipment comprises image acquisition chamber 4, digital camera 5:
Image acquisition chamber 4 is that the semisphere exotic material of 600mm is made for diameter, the inwall painted white, 4 50W Halogen lamp LEDs 1 equidistantly are installed on the bottom of image acquisition chamber 4,2 of load sample platforms in the image acquisition chamber 4 are the black rubber plate of polishing with crocus cloth, sample 3 places on the rubber slab, and it is the 45mm circular hole that a diameter is opened on 4 tops, image acquisition chamber;
Select CANON-PowerShotA70 digital camera 5 for use, camera lens passes the 4 tip circle holes in the image acquisition chamber;
(2) pork colour grading software
Pork colour computing machine grading software is made up of image input control module, image segmentation and identification module, color of image characteristic parameter extraction module, pork colour grade output module:
A, image input control module can be opened the coloured image of digital camera 5 camera lenses, automatic shooting sample 3 automatically;
B, image segmentation and identification module are used for that coloured image to input carries out denoising, goes background, edge extracting, the validity feature color extracting zone that finally obtains the pork image;
C, color of image characteristic parameter extraction module are used for the color characteristic parameter of effective color extracting extracted region images that image segmentation and identification module are obtained, comprise red R, green G, blue B, color H, saturation degree S, brightness V;
D, pork colour grade output module are used to call pork colour grade model: pork colour grade G=4.62+6.63*S-10.20*V, output pork colour rank.
CN 200410098904 2004-12-10 2004-12-10 Pork colour grading instrument Pending CN1619295A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200410098904 CN1619295A (en) 2004-12-10 2004-12-10 Pork colour grading instrument

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200410098904 CN1619295A (en) 2004-12-10 2004-12-10 Pork colour grading instrument

Publications (1)

Publication Number Publication Date
CN1619295A true CN1619295A (en) 2005-05-25

Family

ID=34766684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200410098904 Pending CN1619295A (en) 2004-12-10 2004-12-10 Pork colour grading instrument

Country Status (1)

Country Link
CN (1) CN1619295A (en)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100421823C (en) * 2005-10-13 2008-10-01 南京农业大学 Method for grading pork based on its color and quality
CN101718947B (en) * 2009-12-02 2011-02-16 南京农业大学 Image acquisition auxiliary dark box for agricultural product information detection system
CN102053074A (en) * 2010-11-25 2011-05-11 山东省农业科学院中心实验室 Meat fiber texture comparator
CN101144780B (en) * 2006-09-14 2011-05-11 北京工商大学 Pork freshness intelligent detection device
CN102445275A (en) * 2011-09-21 2012-05-09 温州佳易仪器有限公司 Spectrum light splitting color image color acquisition box and spectrum light splitting color image color detection method
CN103135320A (en) * 2013-03-04 2013-06-05 南京农业大学 Light-emitting diode (LED) lamp box used for collecting high-quality images of agricultural materials
CN105258799A (en) * 2014-07-11 2016-01-20 泰肯贸易股份公司 Spectrometer with Monochromator and Order Sorting Filter
CN105424179A (en) * 2015-12-09 2016-03-23 上海力申科学仪器有限公司 Biohazard safety cabinet device with ultraviolet intensity monitoring system
CN106052862A (en) * 2010-01-27 2016-10-26 英特赛尔美国股份有限公司 Automatic calibration technique for time of flight (TOF) transceivers
CN106052874A (en) * 2016-06-27 2016-10-26 中国科学院西安光学精密机械研究所 Interference imaging spectrometer and interferometer
CN106233105A (en) * 2014-04-28 2016-12-14 柯尼卡美能达株式会社 Color measuring device and method for measuring color
CN106813777A (en) * 2016-12-29 2017-06-09 中国科学院西安光学精密机械研究所 Ultra-large view field compound eye multispectral camera based on adjacent aperture cross transmission
CN106840402A (en) * 2016-12-29 2017-06-13 中国科学院西安光学精密机械研究所 A pendulum is swept and is in orbit calibration subassembly for two spectrum imaging appearance
CN106872038A (en) * 2017-03-10 2017-06-20 中国科学院西安光学精密机械研究所 High-flux high-stability coherent dispersion spectral imaging device
CN106918392A (en) * 2017-03-10 2017-07-04 中国科学院西安光学精密机械研究所 High-stability large-optical-path-difference common-path interference light splitting device and application system thereof
CN107152969A (en) * 2017-06-05 2017-09-12 湖北久之洋红外系统股份有限公司 A kind of offshore type Fourier imaging spectrometer data processing method
CN107209058A (en) * 2015-02-04 2017-09-26 株式会社电装 Optical sensor and its manufacture method
CN107209057A (en) * 2015-02-09 2017-09-26 三菱电机株式会社 Electromagnetic wave detector and gas analyzing apparatus
CN107219000A (en) * 2017-06-08 2017-09-29 太平洋未来有限公司 A kind of light source orientation signal detection system
CN107389188A (en) * 2017-08-22 2017-11-24 京东方科技集团股份有限公司 Light-detecting structure, light detection method, touch-screen and display device
CN107430350A (en) * 2015-02-04 2017-12-01 Asml荷兰有限公司 Metering method and equipment, computer program and etching system
CN107430032A (en) * 2015-03-09 2017-12-01 芬兰国家技术研究中心股份公司 Runner plate and fabry perot interferometer for fabry perot interferometer
CN110646416A (en) * 2019-09-27 2020-01-03 渤海大学 Colorimetric card for evaluating smoked chicken quality and application

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100421823C (en) * 2005-10-13 2008-10-01 南京农业大学 Method for grading pork based on its color and quality
CN101144780B (en) * 2006-09-14 2011-05-11 北京工商大学 Pork freshness intelligent detection device
CN101718947B (en) * 2009-12-02 2011-02-16 南京农业大学 Image acquisition auxiliary dark box for agricultural product information detection system
CN106052862A (en) * 2010-01-27 2016-10-26 英特赛尔美国股份有限公司 Automatic calibration technique for time of flight (TOF) transceivers
CN106052862B (en) * 2010-01-27 2018-08-28 英特赛尔美国股份有限公司 Automatic Calibration Technique for flight time (TOF) transceiver
US10031078B2 (en) 2010-01-27 2018-07-24 Intersil Americas LLC Distance sensing by IQ domain differentiation of time of flight (TOF) measurements
CN102053074A (en) * 2010-11-25 2011-05-11 山东省农业科学院中心实验室 Meat fiber texture comparator
CN102445275A (en) * 2011-09-21 2012-05-09 温州佳易仪器有限公司 Spectrum light splitting color image color acquisition box and spectrum light splitting color image color detection method
CN103135320B (en) * 2013-03-04 2015-08-19 南京农业大学 For gathering the LED case of agricultural material high quality graphic
CN103135320A (en) * 2013-03-04 2013-06-05 南京农业大学 Light-emitting diode (LED) lamp box used for collecting high-quality images of agricultural materials
CN106233105B (en) * 2014-04-28 2018-04-20 柯尼卡美能达株式会社 Color measuring device and method for measuring color
CN106233105A (en) * 2014-04-28 2016-12-14 柯尼卡美能达株式会社 Color measuring device and method for measuring color
CN105258799A (en) * 2014-07-11 2016-01-20 泰肯贸易股份公司 Spectrometer with Monochromator and Order Sorting Filter
CN105258799B (en) * 2014-07-11 2019-05-10 泰肯贸易股份公司 Spectrometer with monochromator and order selection optical filter
CN107430350A (en) * 2015-02-04 2017-12-01 Asml荷兰有限公司 Metering method and equipment, computer program and etching system
CN107430350B (en) * 2015-02-04 2019-10-18 Asml荷兰有限公司 Metering method and equipment, computer program and lithography system
CN107209058A (en) * 2015-02-04 2017-09-26 株式会社电装 Optical sensor and its manufacture method
CN107209057A (en) * 2015-02-09 2017-09-26 三菱电机株式会社 Electromagnetic wave detector and gas analyzing apparatus
CN107209057B (en) * 2015-02-09 2019-08-13 三菱电机株式会社 Electromagnetic wave detector and gas analyzing apparatus
US10495514B2 (en) 2015-03-09 2019-12-03 Teknologian Tutkimuskeskus Vtt Oy Mirror plate for a fabry-perot interferometer and a fabry-perot interferometer
CN107430032A (en) * 2015-03-09 2017-12-01 芬兰国家技术研究中心股份公司 Runner plate and fabry perot interferometer for fabry perot interferometer
CN105424179A (en) * 2015-12-09 2016-03-23 上海力申科学仪器有限公司 Biohazard safety cabinet device with ultraviolet intensity monitoring system
CN106052874B (en) * 2016-06-27 2017-10-31 中国科学院西安光学精密机械研究所 interference imaging spectrometer and interferometer
CN106052874A (en) * 2016-06-27 2016-10-26 中国科学院西安光学精密机械研究所 Interference imaging spectrometer and interferometer
CN106840402B (en) * 2016-12-29 2018-04-10 中国科学院西安光学精密机械研究所 A pendulum is swept and is in orbit calibration subassembly for two spectrum imaging appearance
CN106840402A (en) * 2016-12-29 2017-06-13 中国科学院西安光学精密机械研究所 A pendulum is swept and is in orbit calibration subassembly for two spectrum imaging appearance
CN106813777A (en) * 2016-12-29 2017-06-09 中国科学院西安光学精密机械研究所 Ultra-large view field compound eye multispectral camera based on adjacent aperture cross transmission
CN106918392A (en) * 2017-03-10 2017-07-04 中国科学院西安光学精密机械研究所 High-stability large-optical-path-difference common-path interference light splitting device and application system thereof
CN106872038A (en) * 2017-03-10 2017-06-20 中国科学院西安光学精密机械研究所 High-flux high-stability coherent dispersion spectral imaging device
CN107152969A (en) * 2017-06-05 2017-09-12 湖北久之洋红外系统股份有限公司 A kind of offshore type Fourier imaging spectrometer data processing method
CN107219000A (en) * 2017-06-08 2017-09-29 太平洋未来有限公司 A kind of light source orientation signal detection system
CN107389188A (en) * 2017-08-22 2017-11-24 京东方科技集团股份有限公司 Light-detecting structure, light detection method, touch-screen and display device
CN110646416A (en) * 2019-09-27 2020-01-03 渤海大学 Colorimetric card for evaluating smoked chicken quality and application
CN110646416B (en) * 2019-09-27 2021-12-07 渤海大学 Colorimetric card for evaluating smoked chicken quality and application

Similar Documents

Publication Publication Date Title
CN1619295A (en) Pork colour grading instrument
WO2020108083A1 (en) Video processing method and apparatus, electronic device, and computer-readable medium
Ren et al. Gated fusion network for single image dehazing
EP3996381A1 (en) Cover image determination method and apparatus, and device
KR102519085B1 (en) Method and apparatus of multi-frame super resolution robust to local and global motion
US6393147B2 (en) Color region based recognition of unidentified objects
CN101213576B (en) Album creating apparatus, album creating method
US20140152849A1 (en) Video capture of multi-faceted documents
CN1207924C (en) Method for testing face by image
KR100708130B1 (en) Apparatus and method for extracting moving image
JP2007206919A (en) Display control device, method, program and storage medium
CN1674048A (en) Image processing apparatus, image processing method and program product therefor
CN108229346B (en) Video summarization using signed foreground extraction and fusion
WO2020207203A1 (en) Prospect data generation and application methods, related apparatus and system
CN103440674A (en) Method for rapidly generating crayon special effect of digital image
CN110858277A (en) Method and device for obtaining attitude classification model
US20110064319A1 (en) Electronic apparatus, image display method, and content reproduction program
CN104346630A (en) Cloud flower identifying method based on heterogeneous feature fusion
JP5640622B2 (en) Method for classifying red-eye object candidates, computer-readable medium, and image processing apparatus
CN113643202B (en) Low-light-level image enhancement method based on noise attention-seeking instruction
CN102055932A (en) Method for searching television program and television set using same
CN114066823A (en) Method for detecting color block and related product thereof
JP4441300B2 (en) Image processing apparatus, image processing method, image processing program, and recording medium storing the program
CN103975583A (en) Capturing multiple video channels for video analytics and encoding
CN108462878B (en) Teaching video compression algorithm based on key frame and indicator motion model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication