From e8ba1e78e72f3f7ec2841f55fd90253b4dc414df Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 목, 14 10월 2021 14:15:04 +0900 Subject: [PATCH] Ongoing60 #3671 CF AOI Review 전설비 Align Matching 방법 개선 --- ReviewSystem/ReviewRecipeEditor/DlgAlign.h | 10 + ReviewSystem/ReviewRecipeEditor/ReviewRecipeEditor.rc | 37 +++-- ReviewSystem/ReviewSystem/ReviewInterface.cpp | 4 ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp | 4 ReviewSystem/CHAlignFinder/AlignFinder.cpp | 30 +++- ReviewSystem/ReviewSystem/CameraControlAlign.h | 7 ReviewSystem/ReviewRecipeEditor/resource.h | 2 ReviewSystem/CHReviewRecipe/Rcp_RsAlignManager.cpp | 16 ++ ReviewSystem/ReviewSystem/CameraControlAlign.cpp | 97 +++++++++++++++ ReviewSystem/CHReviewRecipe/RsRcpAlignInfo.cpp | 4 ReviewSystem/include/CHReviewResult/AlignResult.h | 4 ReviewSystem/include/CHReviewRecipe/RsRcpAlignInfo.h | 4 ReviewSystem/ReviewRecipeEditor/DlgAlign.cpp | 125 +++++++++++++++++++- 13 files changed, 304 insertions(+), 40 deletions(-) diff --git a/ReviewSystem/CHAlignFinder/AlignFinder.cpp b/ReviewSystem/CHAlignFinder/AlignFinder.cpp index 67d3d83..4e9c0c6 100644 --- a/ReviewSystem/CHAlignFinder/AlignFinder.cpp +++ b/ReviewSystem/CHAlignFinder/AlignFinder.cpp @@ -157,11 +157,14 @@ return findResult; } + /*< LYW 20211013 - #3671 Delete Start >*/ // step2. edge find - if (FindAlignEdge(findResult)==1) - { - return findResult; - } +// if (FindAlignEdge(findResult) == 1) +// { +// return findResult; +// } + /*< LYW 20211013 - #3671 Delete End >*/ + return findResult; } @@ -205,11 +208,13 @@ CCHImageData tempImage; CCHImageProcess::ImageNormalize(&resultImage, &m_BlobImage, 0, 255); - if (findResult.dMatchValue<m_findParam.dMatchRate) - { - findResult.nResultCode = AlignMatch_LowScore; - return 0; - } + /*< LYW 20211013 - #3671 Delete Start >*/ +// if (findResult.dMatchValue < m_findParam.dMatchRate) +// { +// findResult.nResultCode = AlignMatch_LowScore; +// return 0; +// } + /*< LYW 20211013 - #3671 Delete End >*/ // step5. Make Result 이미지 findResult.nResultCode = AlignMatch_Success; @@ -223,6 +228,13 @@ m_ResultImage.DrawRectangle(CPoint((int)(dResultX+0.5), (int)(dResultY+0.5)), CPoint((int)(dResultX+m_pTempImage->GetWidth()+0.5), (int)(dResultY+m_pTempImage->GetHeight()+0.5)), RGB(255,255,255), 2); } + /*< LYW 20211013 - #3671 ADD Start >*/ + if (findResult.dMatchValue < m_findParam.dMatchRate) + { + findResult.nResultCode = AlignMatch_LowScore; + return 0; + } + /*< LYW 20211013 - #3671 ADD End >*/ return 1; } diff --git a/ReviewSystem/CHReviewRecipe/Rcp_RsAlignManager.cpp b/ReviewSystem/CHReviewRecipe/Rcp_RsAlignManager.cpp index 21a5dc9..8fc2861 100644 --- a/ReviewSystem/CHReviewRecipe/Rcp_RsAlignManager.cpp +++ b/ReviewSystem/CHReviewRecipe/Rcp_RsAlignManager.cpp @@ -34,6 +34,14 @@ strItem.Format(_T("RCP_ALIGN_SECOND_IMAGE_FILE")); macroFile.SetItem(strItem, m_rsRcpAlignInfo.m_strSecondImageFile); + /*< LYW 20211012 - #3671 ADD Start >*/ + strItem.Format(_T("RCP_ALIGN_FIRST_ASSISTANT_IMAGE_FILE")); + macroFile.SetItem(strItem, m_rsRcpAlignInfo.m_strFirstAssistantImageFile); + + strItem.Format(_T("RCP_ALIGN_SECOND_ASSISTANT_IMAGE_FILE")); + macroFile.SetItem(strItem, m_rsRcpAlignInfo.m_strSecondAssistantImageFile); + /*< LYW 20211012 - #3671 ADD End >*/ + strItem.Format(_T("RCP_ALIGN_TOTAL_PITCH_IMAGE_FILE")); macroFile.SetItem(strItem, m_rsRcpAlignInfo.m_strTotalPitchImageFile); @@ -127,6 +135,14 @@ strItem.Format(_T("RCP_ALIGN_SECOND_IMAGE_FILE")); macroFile.GetItem(strItem, m_rsRcpAlignInfo.m_strSecondImageFile, _T("")); + /*< LYW 20211012 - #3671 ADD Start >*/ + strItem.Format(_T("RCP_ALIGN_FIRST_ASSISTANT_IMAGE_FILE")); + macroFile.GetItem(strItem, m_rsRcpAlignInfo.m_strFirstAssistantImageFile, _T("")); + + strItem.Format(_T("RCP_ALIGN_SECOND_ASSISTANT_IMAGE_FILE")); + macroFile.GetItem(strItem, m_rsRcpAlignInfo.m_strSecondAssistantImageFile, _T("")); + /*< LYW 20211012 - #3671 ADD End >*/ + strItem.Format(_T("RCP_ALIGN_TOTAL_PITCH_IMAGE_FILE")); macroFile.GetItem(strItem, m_rsRcpAlignInfo.m_strTotalPitchImageFile, _T("")); diff --git a/ReviewSystem/CHReviewRecipe/RsRcpAlignInfo.cpp b/ReviewSystem/CHReviewRecipe/RsRcpAlignInfo.cpp index d07df2e..eb5a5a3 100644 --- a/ReviewSystem/CHReviewRecipe/RsRcpAlignInfo.cpp +++ b/ReviewSystem/CHReviewRecipe/RsRcpAlignInfo.cpp @@ -20,6 +20,10 @@ m_dMatchingRate = 0.9; m_strFirstImageFile = _T(""); m_strSecondImageFile = _T(""); + /*< LYW 20211012 - #3671 ADD Start >*/ + m_strFirstAssistantImageFile = _T(""); + m_strSecondAssistantImageFile = _T(""); + /*< LYW 20211012 - #3671 ADD End >*/ m_strTotalPitchImageFile= _T(""); // edge find param m_bUseEdge = TRUE; diff --git a/ReviewSystem/ReviewRecipeEditor/DlgAlign.cpp b/ReviewSystem/ReviewRecipeEditor/DlgAlign.cpp index 96e4780..453c49c 100644 --- a/ReviewSystem/ReviewRecipeEditor/DlgAlign.cpp +++ b/ReviewSystem/ReviewRecipeEditor/DlgAlign.cpp @@ -19,6 +19,10 @@ { m_pFirstView = new CCHImageView(this); m_pSecondView = new CCHImageView(this); + /*< LYW 20211012 - #3671 ADD Start >*/ + m_pFirstAssistantView = new CCHImageView(this); + m_pSecondAssistantView = new CCHImageView(this); + /*< LYW 20211012 - #3671 ADD End >*/ } CDlgAlign::~CDlgAlign() @@ -34,7 +38,19 @@ delete m_pSecondView; m_pSecondView = NULL; } + /*< LYW 20211012 - #3671 ADD Start >*/ + if (m_pFirstAssistantView) + { + delete m_pFirstAssistantView; + m_pFirstAssistantView = NULL; + } + if (m_pSecondAssistantView) + { + delete m_pSecondAssistantView; + m_pSecondAssistantView = NULL; + } + /*< LYW 20211012 - #3671 ADD End >*/ } void CDlgAlign::DoDataExchange(CDataExchange* pDX) @@ -100,6 +116,16 @@ { m_pSecondView->Invalidate(TRUE); } + /*< LYW 20211012 - #3671 ADD Start >*/ + else if (nIdx == 2 && m_pFirstAssistantView->LoadImage(strFilepath)) + { + m_pFirstAssistantView->Invalidate(TRUE); + } + else if (nIdx == 3 && m_pSecondAssistantView->LoadImage(strFilepath)) + { + m_pSecondAssistantView->Invalidate(TRUE); + } + /*< LYW 20211012 - #3671 ADD End >*/ m_ctrlGridAlignImageInfo.SetItemText(nIdx, 1, strFilename); @@ -131,8 +157,8 @@ CRect rect; rect.left = 10; rect.top = 550; - rect.right = rect.left + 232; - rect.bottom = rect.top + 232; + rect.right = rect.left + 150; + rect.bottom = rect.top + 150; m_pFirstView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY , rect, this, 0); m_pFirstView->SetDrawType(DrawFit); @@ -144,16 +170,46 @@ if (m_pSecondView) { CRect rect; - rect.left = 244; + rect.left = 161; rect.top = 550; - rect.right = rect.left + 232; - rect.bottom = rect.top + 232; + rect.right = rect.left + 150; + rect.bottom = rect.top + 150; m_pSecondView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY , rect, this, 0); m_pSecondView->SetDrawType(DrawFit); m_pSecondView->SetViewName(_T("Second")); m_pSecondView->ShowWindow(SW_SHOW); } + + /*< LYW 20211012 - #3671 ADD Start >*/ + if (m_pFirstAssistantView) + { + CRect rect; + rect.left = 10; + rect.top = 701; + rect.right = rect.left + 150; + rect.bottom = rect.top + 150; + + m_pFirstAssistantView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY, rect, this, 0); + m_pFirstAssistantView->SetDrawType(DrawFit); + m_pFirstAssistantView->SetViewName(_T("FirstAssistant")); + m_pFirstAssistantView->ShowWindow(SW_SHOW); + } + + if (m_pSecondAssistantView) + { + CRect rect; + rect.left = 161; + rect.top = 701; + rect.right = rect.left + 150; + rect.bottom = rect.top + 150; + + m_pSecondAssistantView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY, rect, this, 0); + m_pSecondAssistantView->SetDrawType(DrawFit); + m_pSecondAssistantView->SetViewName(_T("SecondAssistant")); + m_pSecondAssistantView->ShowWindow(SW_SHOW); + } + /*< LYW 20211012 - #3671 ADD End >*/ return TRUE; // return TRUE unless you set the focus to a control // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다. @@ -316,6 +372,12 @@ nRowIdx++; pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strSecondImageFile = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); nRowIdx++; + /*< LYW 20211012 - #3671 ADD Start >*/ + pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strFirstAssistantImageFile = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); + nRowIdx++; + pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strSecondAssistantImageFile = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); + nRowIdx++; + /*< LYW 20211012 - #3671 ADD End >*/ strItemText = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dMatchingRate = _tcstod(strItemText, NULL); @@ -548,6 +610,22 @@ Item.strText = strTemp; m_ctrlGridAlignImageInfo.SetItem(&Item); + /*< LYW 20211012 - #3671 ADD Start >*/ + nRowIdx++; + Item.row = nRowIdx; + Item.col = nColIdx; + strTemp.Format(_T("1st Assist Mark")); + Item.strText = strTemp; + m_ctrlGridAlignImageInfo.SetItem(&Item); + + nRowIdx++; + Item.row = nRowIdx; + Item.col = nColIdx; + strTemp.Format(_T("2nd Assist Mark")); + Item.strText = strTemp; + m_ctrlGridAlignImageInfo.SetItem(&Item); + /*< LYW 20211012 - #3671 ADD End >*/ + nRowIdx++; Item.row = nRowIdx; Item.col = nColIdx; @@ -611,15 +689,48 @@ m_ctrlGridAlignImageInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellButton)); pCellButton = (CGridCellButton*)m_ctrlGridAlignImageInfo.GetCell(nRowIdx, nColIdx); pCellButton->SetText(_T("Browser")); + + /*< LYW 20211012 - #3671 ADD Start >*/ + // first Assistant + nRowIdx = 2; + nColIdx = 1; + strItemText = pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strFirstAssistantImageFile; + m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); + + strFilename = ALIGN_IMAGE_PATH; + strFilename = strFilename + _T("\\") + strItemText; + m_pFirstAssistantView->LoadImage(strFilename); + /*m_pFirstView->Invalidate(TRUE);*/ + + nColIdx = 2; + m_ctrlGridAlignImageInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellButton)); + pCellButton = (CGridCellButton*)m_ctrlGridAlignImageInfo.GetCell(nRowIdx, nColIdx); + pCellButton->SetText(_T("Browser")); + + // second Assistant + nRowIdx = 3; + nColIdx = 1; + strItemText = pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strSecondAssistantImageFile; + m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); + strFilename = ALIGN_IMAGE_PATH; + strFilename = strFilename + _T("\\") + strItemText; + m_pSecondAssistantView->LoadImage(strFilename); + //m_pSecondView->Invalidate(TRUE); + + nColIdx = 2; + m_ctrlGridAlignImageInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellButton)); + pCellButton = (CGridCellButton*)m_ctrlGridAlignImageInfo.GetCell(nRowIdx, nColIdx); + pCellButton->SetText(_T("Browser")); + /*< LYW 20211012 - #3671 ADD End >*/ // - nRowIdx = 2; + nRowIdx = 4; nColIdx = 1; strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dMatchingRate); m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); // - nRowIdx = 3; + nRowIdx = 5; nColIdx = 1; strItemText = pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strTotalPitchImageFile; m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); diff --git a/ReviewSystem/ReviewRecipeEditor/DlgAlign.h b/ReviewSystem/ReviewRecipeEditor/DlgAlign.h index fd5a563..ab2ebe7 100644 --- a/ReviewSystem/ReviewRecipeEditor/DlgAlign.h +++ b/ReviewSystem/ReviewRecipeEditor/DlgAlign.h @@ -5,7 +5,11 @@ class CCHImageData; class CCHImageView; -#define ALIGN_IMAGE_INFO_GRID_ROW_COUNT 4 +/*< LYW 20211012 - #3671 MOD Start >*/ +#define ALIGN_IMAGE_INFO_GRID_ROW_COUNT 6 +/*< LYW 20211012 - #3671 MOD End >*/ +/*< Origin Code >*/ +//#define ALIGN_IMAGE_INFO_GRID_ROW_COUNT 4 #define ALIGN_IMAGE_INFO_GRID_COL_COUNT 3 #define ALIGN_FIND_INFO_GRID_ROW_COUNT 2 #define ALIGN_FIND_INFO_GRID_COL_COUNT 5 @@ -63,6 +67,10 @@ CCHImageView* m_pFirstView; CCHImageView* m_pSecondView; + /*< LYW 20211012 - #3671 ADD Start >*/ + CCHImageView* m_pFirstAssistantView; + CCHImageView* m_pSecondAssistantView; + /*< LYW 20211012 - #3671 ADD End >*/ CCHImageView* m_pTotalPitchView; virtual BOOL OnInitDialog(); diff --git a/ReviewSystem/ReviewRecipeEditor/ReviewRecipeEditor.rc b/ReviewSystem/ReviewRecipeEditor/ReviewRecipeEditor.rc index 555a53b..caf48b9 100644 --- a/ReviewSystem/ReviewRecipeEditor/ReviewRecipeEditor.rc +++ b/ReviewSystem/ReviewRecipeEditor/ReviewRecipeEditor.rc @@ -213,28 +213,30 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN PUSHBUTTON "Apply",IDC_BUTTON_RCP_ALIGN_APPLY,322,24,50,14 - LTEXT "Edge Find",IDC_STATIC,7,66,38,14,SS_CENTERIMAGE - CONTROL "Custom1",IDC_GRID_RCP_ALIGN_FIND_INFO,"MFCGridCtrl",WS_TABSTOP,7,82,311,30 - LTEXT "Light Setting",IDC_STATIC,9,143,49,14,SS_CENTERIMAGE - CONTROL "Custom1",IDC_GRID_RCP_ALIGN_LIGHT_INFO,"MFCGridCtrl",WS_TABSTOP,7,160,311,30 + LTEXT "Edge Find",IDC_STATIC,7,116,38,14,SS_CENTERIMAGE + CONTROL "Custom1",IDC_GRID_RCP_ALIGN_FIND_INFO,"MFCGridCtrl",WS_TABSTOP,7,128,311,30 + LTEXT "Light Setting",IDC_STATIC,9,170,49,14,SS_CENTERIMAGE + CONTROL "Custom1",IDC_GRID_RCP_ALIGN_LIGHT_INFO,"MFCGridCtrl",WS_TABSTOP,7,182,311,30 PUSHBUTTON "Reset",IDC_BUTTON_RCP_ALIGN_RESET,322,7,50,14 - LTEXT "Auto Light Level",IDC_STATIC,7,195,52,14,SS_CENTERIMAGE - CONTROL "Custom1",IDC_GRID_RCP_ALIGN_AUTO_INFO,"MFCGridCtrl",WS_TABSTOP,7,212,311,44 - CONTROL "Operate",IDC_CHECK_AUTO_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,65,197,55,10 - CONTROL "Operate",IDC_CHECK_MANUAL_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,56,146,55,10 - CONTROL "Custom1",IDC_GRID_RCP_ALIGN_ROTATE_INFO,"MFCGridCtrl",WS_DISABLED | WS_TABSTOP,7,277,311,30 - LTEXT "Rotation Correction",IDC_STATIC,7,263,64,14,SS_CENTERIMAGE | WS_DISABLED - CONTROL "Operate",IDC_CHECK_ROTATE_PROCESS,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,74,266,55,10 + LTEXT "Auto Light Level",IDC_STATIC,7,212,52,14,SS_CENTERIMAGE + CONTROL "Custom1",IDC_GRID_RCP_ALIGN_AUTO_INFO,"MFCGridCtrl",WS_TABSTOP,7,226,311,44 + CONTROL "Operate",IDC_CHECK_AUTO_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,65,216,55,10 + CONTROL "Operate",IDC_CHECK_MANUAL_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,56,173,55,10 + CONTROL "Custom1",IDC_GRID_RCP_ALIGN_ROTATE_INFO,"MFCGridCtrl",WS_DISABLED | WS_TABSTOP,7,284,311,30 + LTEXT "Rotation Correction",IDC_STATIC,7,271,64,14,SS_CENTERIMAGE | WS_DISABLED + CONTROL "Operate",IDC_CHECK_ROTATE_PROCESS,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,74,273,55,10 LTEXT "Image Matching",IDC_STATIC,7,7,53,14,SS_CENTERIMAGE - CONTROL "Custom1",IDC_GRID_RCP_ALIGN_IMAGE_INFO,"MFCGridCtrl",WS_TABSTOP,7,22,311,44 + CONTROL "Custom1",IDC_GRID_RCP_ALIGN_IMAGE_INFO,"MFCGridCtrl",WS_TABSTOP,7,22,311,92 CONTROL "Operate",IDC_CHECK_IMAGE_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,64,10,55,10 - CONTROL "Operate",IDC_CHECK_EDGE_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,46,69,55,10 + CONTROL "Operate",IDC_CHECK_EDGE_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,46,118,55,10 LTEXT "Align Images",IDC_STATIC,7,315,48,14,SS_CENTERIMAGE PUSHBUTTON "Find Test",IDC_BUTTON_RCP_FIND_TEST,55,316,50,14 - LTEXT "EdgeAlign ",IDC_STATIC,9,121,49,14,SS_CENTERIMAGE - CONTROL "Operate",IDC_CHECK_EDGEALIGN_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,46,124,55,10 + LTEXT "EdgeAlign ",IDC_STATIC,9,159,49,14,SS_CENTERIMAGE + CONTROL "Operate",IDC_CHECK_EDGEALIGN_PROCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,46,162,55,10 CONTROL "Align Skip",IDC_CHECK_ALIGN_SKIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,274,10,43,10 CONTROL "TotalPitchMeasure",IDC_CHECK_TOTALPITCHMEASRE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,192,10,74,10 + LTEXT "main Templete",IDC_STATIC,226,370,53,14,SS_CENTERIMAGE + LTEXT "Assistant Templete",IDC_STATIC,226,463,84,14,SS_CENTERIMAGE END IDD_DIALOG_REVIEW_RCP_EDITOR_DEFECT_FIND DIALOGEX 0, 0, 379, 526 @@ -749,6 +751,11 @@ 0 END +IDD_DIALOG_REVIEW_RCP_EDITOR_ALIGN AFX_DIALOG_LAYOUT +BEGIN + 0 +END + #endif // 한국어(대한민국) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/ReviewSystem/ReviewRecipeEditor/resource.h b/ReviewSystem/ReviewRecipeEditor/resource.h index ca3fb69..0befcf5 100644 --- a/ReviewSystem/ReviewRecipeEditor/resource.h +++ b/ReviewSystem/ReviewRecipeEditor/resource.h @@ -305,7 +305,7 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 154 +#define _APS_NEXT_RESOURCE_VALUE 155 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1122 #define _APS_NEXT_SYMED_VALUE 106 diff --git a/ReviewSystem/ReviewSystem/CameraControlAlign.cpp b/ReviewSystem/ReviewSystem/CameraControlAlign.cpp index aafd737..898b8f7 100644 --- a/ReviewSystem/ReviewSystem/CameraControlAlign.cpp +++ b/ReviewSystem/ReviewSystem/CameraControlAlign.cpp @@ -267,21 +267,37 @@ CString strFilename = _T(""); CCHImageData tempImage; + /*< LYW 20211012 - #3671 ADD Start >*/ + CCHImageData assistanttempImage; + /*< LYW 20211012 - #3671 ADD End >*/ for (int i=0; i<2; i++) { if(m_vecCameraImage.size() <= i) continue; (m_vecCameraImage[i]->GetImageData(View_Template))->ReleaseImage(); + /*< LYW 20211012 - #3671 ADD Start >*/ + (m_vecCameraImage[i]->GetImageData(View_AssistantTemplate))->ReleaseImage(); + /*< LYW 20211012 - #3671 ADD End >*/ // load CString strFilename = ALIGN_IMAGE_PATH; + /*< LYW 20211012 - #3671 ADD Start >*/ + CString strAssistantFilename = ALIGN_IMAGE_PATH; + /*< LYW 20211012 - #3671 ADD End >*/ if (i==0) { strFilename += _T("\\") + m_AlignRecipe.strFirstImageFile; + /*< LYW 20211012 - #3671 ADD Start >*/ + strAssistantFilename += _T("\\") + m_AlignRecipe.strFirstAssistantImageFile; + /*< LYW 20211012 - #3671 ADD End >*/ + } else if (i==1) { strFilename += _T("\\") + m_AlignRecipe.strSecondImageFile; + /*< LYW 20211012 - #3671 ADD Start >*/ + strAssistantFilename += _T("\\") + m_AlignRecipe.strSecondAssistantImageFile; + /*< LYW 20211012 - #3671 ADD End >*/ } //strFilename += m_AlignRecipe.strTemplateName[i]; @@ -292,7 +308,18 @@ continue; } + /*< LYW 20211012 - #3671 ADD Start >*/ + if (assistanttempImage.LoadImage(strAssistantFilename) == FALSE) + { + bAllLoad = bAllLoad && FALSE; + continue; + } + /*< LYW 20211012 - #3671 ADD End >*/ + bAllLoad = bAllLoad && tempImage.GetBandImage(BandTypeGray, m_vecCameraImage[i]->GetImageData(View_Template)); + /*< LYW 20211012 - #3671 ADD Start >*/ + bAllLoad = bAllLoad && assistanttempImage.GetBandImage(BandTypeGray, m_vecCameraImage[i]->GetImageData(View_AssistantTemplate)); + /*< LYW 20211012 - #3671 ADD End >*/ } return bAllLoad; @@ -597,10 +624,26 @@ wcstombs_s(&CharactersConverted,CDitGlassRawClient::GetInstance()->GetGlassData()->m_strAlignMarkSecond, uploadAlignimage, _TRUNCATE); }*/ // find process - - - // find process 諛붿뒳�윭 移대찓�씪媛� 3梨꾨꼸吏쒕━�씪�꽌 �떆���뒪 �룎�븣�뒗 1梨꾨꼸濡� 諛붽퓭�꽌 �룘 ksm CCHImageData camImage; + + //#3671 TEST CODE Start +// CCHImageData TestImage; +// +// (m_vecCameraImage[nCameraIdx]->GetImageData(View_Camera))->ReleaseImage(); +// CString strFilename = ALIGN_IMAGE_PATH; +// if (nCameraIdx == 0) +// { +// strFilename += _T("\\Test3.BMP"); +// } +// else +// { +// strFilename += _T("\\Test4.BMP"); +// } +// TestImage.LoadImage(strFilename); +// TestImage.GetBandImage(BandTypeGray, m_vecCameraImage[nCameraIdx]->GetImageData(View_Camera)); +// (m_vecCameraImage[nCameraIdx]->GetImageData(View_Camera))->GetBandImage(BandTypeGray, &camImage); + //#3671 TEST CODE End +// find process 諛붿뒳�윭 移대찓�씪媛� 3梨꾨꼸吏쒕━�씪�꽌 �떆���뒪 �룎�븣�뒗 1梨꾨꼸濡� 諛붽퓭�꽌 �룘 ksm if ((pCameraImage->GetImageData(View_Camera))->GetChannels() > 1) (pCameraImage->GetImageData(View_Camera))->GetBandImage(BandTypeGray, &camImage); else @@ -609,20 +652,64 @@ //SAlignFindResult findResult = pAlignFinder->FindAlign(pCameraImage->GetImageData(View_Matching), findParam, pCameraImage->GetImageData(View_Template)); SAlignFindResult findResult = pAlignFinder->FindAlign(&camImage, findParam, pCameraImage->GetImageData(View_Template)); + g_pLog->DisplayMessage(_T("Main TempleteMatching Result : %d Cam ResultCode = %d, PixelX = %d, PixelY = %d, MatchingRate = %.3lf"), nCameraIdx, findResult.nResultCode, int(findResult.dPosX + 0.5), int(findResult.dPosY + 0.5), findResult.dMatchValue); // result process if (findResult.nResultCode==AlignMatch_Success) { + g_pLog->DisplayMessage(_T("Main TempleteMatching Success!")); m_AlignResult.nFindAlign[nCameraIdx] = 1; m_AlignResult.dFindPixelX[nCameraIdx] = int(findResult.dPosX + 0.5); m_AlignResult.dFindPixelY[nCameraIdx] = int(findResult.dPosY + 0.5); m_AlignResult.dFindScore[nCameraIdx] = findResult.dMatchValue; } + /*< LYW 20211013 - #3671 ADD Start >*/ + else { - m_AlignResult.nFindAlign[nCameraIdx] = 0; - m_AlignResult.dFindScore[nCameraIdx] = findResult.dMatchValue; + SAlignFindResult findAssistantResult = pAlignFinder->FindAlign(&camImage, findParam, pCameraImage->GetImageData(View_AssistantTemplate)); + g_pLog->DisplayMessage(_T("Assistant TempleteMatching Result : %d Cam ResultCode = %d, PixelX = %d, PixelY = %d, MatchingRate = %.3lf"), nCameraIdx, findAssistantResult.nResultCode, int(findAssistantResult.dPosX + 0.5), int(findAssistantResult.dPosY + 0.5), findAssistantResult.dMatchValue); + if (findAssistantResult.nResultCode == AlignMatch_Success) + { + g_pLog->DisplayMessage(_T("Assistant TempleteMatching Success!")); + m_AlignResult.nFindAlign[nCameraIdx] = 1; + m_AlignResult.dFindPixelX[nCameraIdx] = int(findAssistantResult.dPosX + 0.5); + m_AlignResult.dFindPixelY[nCameraIdx] = int(findAssistantResult.dPosY + 0.5); + m_AlignResult.dFindScore[nCameraIdx] = findAssistantResult.dMatchValue; + } + + else + { + int dffmain2assistanstX = int(findResult.dPosX) - int(findAssistantResult.dPosX); + int dffmain2assistanstY = int(findResult.dPosY) - int(findAssistantResult.dPosY); + g_pLog->DisplayMessage(_T("Main, Assistant TempleteMatching All Low Score! differenceX = %d, differenceY = %d"), dffmain2assistanstX, dffmain2assistanstY); + + if (abs(dffmain2assistanstX) <= 10 && abs(dffmain2assistanstY) <= 10 && findResult.dMatchValue != 0.0) + { + g_pLog->DisplayMessage(_T("Main Assistant Templete Find Same Point! Align Success!")); + m_AlignResult.nFindAlign[nCameraIdx] = 1; + m_AlignResult.dFindPixelX[nCameraIdx] = int(findResult.dPosX + 0.5); + m_AlignResult.dFindPixelY[nCameraIdx] = int(findResult.dPosY + 0.5); + m_AlignResult.dFindScore[nCameraIdx] = findResult.dMatchValue; + } + + else + { + g_pLog->DisplayMessage(_T("Main Assistant Templete Don`t Find Same Point! Align Fail!")); + m_AlignResult.nFindAlign[nCameraIdx] = 0; + m_AlignResult.dFindScore[nCameraIdx] = findResult.dMatchValue; + } + } } + /*< LYW 20211013 - #3671 ADD End >*/ + + /*< LYW 20211013 - #3671 Delete Start >*/ +// else +// { +// m_AlignResult.nFindAlign[nCameraIdx] = 0; +// m_AlignResult.dFindScore[nCameraIdx] = findResult.dMatchValue; +// } + /*< LYW 20211013 - #3671 Delete End >*/ // save threshold image strPath.Format(_T("%s\\Cam%02d_AlignTH_%04d%02d%02d%02d%02d%02d.jpg"), m_strSaveImageBasePath, nCameraIdx, diff --git a/ReviewSystem/ReviewSystem/CameraControlAlign.h b/ReviewSystem/ReviewSystem/CameraControlAlign.h index 911ae51..e6b31d6 100644 --- a/ReviewSystem/ReviewSystem/CameraControlAlign.h +++ b/ReviewSystem/ReviewSystem/CameraControlAlign.h @@ -98,8 +98,11 @@ typedef std::vector<SLightData*> VectorLightData; typedef std::vector<SLightData*>::iterator VectorLightDataIt; - -enum AlignViewMode { View_Camera=0, View_Result, View_Template, View_Matching }; +/*< LYW 20211012 - #3671 MOD Start >*/ +enum AlignViewMode { View_Camera = 0, View_Result, View_Template, View_AssistantTemplate, View_Matching }; +/*< LYW 20211012 - #3671 MOD End >*/ +/*< Origin Code >*/ +//enum AlignViewMode { View_Camera=0, View_Result, View_Template, View_Matching }; enum AlignResult { Align_Fail=-2, Align_TempFail=-1, Align_None=0, Align_Success=1 }; //#3357 KYH Align Image 珥덇린�솕 ADD START enum AlignFinderType { AlignFinderType_Normal = 0, AlignFinderType_Corner, AlignFinderType_Extend, AlignFinderType_count }; //210330 kyh 異붽� diff --git a/ReviewSystem/ReviewSystem/ReviewInterface.cpp b/ReviewSystem/ReviewSystem/ReviewInterface.cpp index de0e2d8..ac3fa32 100644 --- a/ReviewSystem/ReviewSystem/ReviewInterface.cpp +++ b/ReviewSystem/ReviewSystem/ReviewInterface.cpp @@ -5772,6 +5772,10 @@ pGlassResult->m_AlignRecipe.dMatchingRate = pRsRcpAlignInfo->m_dMatchingRate; pGlassResult->m_AlignRecipe.strFirstImageFile = pRsRcpAlignInfo->m_strFirstImageFile; pGlassResult->m_AlignRecipe.strSecondImageFile = pRsRcpAlignInfo->m_strSecondImageFile; + /*< LYW 20211012 - #3671 ADD Start >*/ + pGlassResult->m_AlignRecipe.strFirstAssistantImageFile = pRsRcpAlignInfo->m_strFirstAssistantImageFile; + pGlassResult->m_AlignRecipe.strSecondAssistantImageFile = pRsRcpAlignInfo->m_strSecondAssistantImageFile; + /*< LYW 20211012 - #3671 ADD End >*/ pGlassResult->m_AlignRecipe.strTotalPitchImageFile = pRsRcpAlignInfo->m_strTotalPitchImageFile; // edge find param diff --git a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp index aa133fc..c2aa7ea 100644 --- a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp +++ b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp @@ -3772,6 +3772,10 @@ pGlassResult->m_AlignRecipe.dMatchingRate = pRsRcpAlignInfo->m_dMatchingRate; pGlassResult->m_AlignRecipe.strFirstImageFile = pRsRcpAlignInfo->m_strFirstImageFile; pGlassResult->m_AlignRecipe.strSecondImageFile = pRsRcpAlignInfo->m_strSecondImageFile; + /*< LYW 20211012 - #3671 ADD Start >*/ + pGlassResult->m_AlignRecipe.strFirstAssistantImageFile = pRsRcpAlignInfo->m_strFirstAssistantImageFile; + pGlassResult->m_AlignRecipe.strSecondAssistantImageFile = pRsRcpAlignInfo->m_strSecondAssistantImageFile; + /*< LYW 20211012 - #3671 ADD End >*/ pGlassResult->m_AlignRecipe.strTotalPitchImageFile = pRsRcpAlignInfo->m_strTotalPitchImageFile; // edge find param diff --git a/ReviewSystem/include/CHReviewRecipe/RsRcpAlignInfo.h b/ReviewSystem/include/CHReviewRecipe/RsRcpAlignInfo.h index 2b16dd8..13996d4 100644 --- a/ReviewSystem/include/CHReviewRecipe/RsRcpAlignInfo.h +++ b/ReviewSystem/include/CHReviewRecipe/RsRcpAlignInfo.h @@ -28,6 +28,10 @@ double m_dMatchingRate; CString m_strFirstImageFile; CString m_strSecondImageFile; +/*< LYW 20211012 - #3671 ADD Start >*/ + CString m_strFirstAssistantImageFile; + CString m_strSecondAssistantImageFile; +/*< LYW 20211012 - #3671 ADD End >*/ CString m_strTotalPitchImageFile; // edge find param diff --git a/ReviewSystem/include/CHReviewResult/AlignResult.h b/ReviewSystem/include/CHReviewResult/AlignResult.h index dde4932..b99a29c 100644 --- a/ReviewSystem/include/CHReviewResult/AlignResult.h +++ b/ReviewSystem/include/CHReviewResult/AlignResult.h @@ -42,6 +42,10 @@ double dMatchingRate; CString strFirstImageFile; CString strSecondImageFile; + /*< LYW 20211012 - #3671 ADD Start >*/ + CString strFirstAssistantImageFile; + CString strSecondAssistantImageFile; + /*< LYW 20211012 - #3671 ADD End >*/ CString strTotalPitchImageFile; // edge find param -- Gitblit v1.9.3