CN1619295A - Pork colour grading instrument - Google Patents
Pork colour grading instrument Download PDFInfo
- 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
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
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.
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)
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 |
-
2004
- 2004-12-10 CN CN 200410098904 patent/CN1619295A/en active Pending
Cited By (34)
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 |