• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于機(jī)器視覺的高速在線藥粒計數(shù)系統(tǒng)程序的設(shè)計

      2023-10-16 08:40:08孫凱明
      黑龍江科學(xué) 2023年18期
      關(guān)鍵詞:字型控件計數(shù)

      孫凱明,郝 明,王 剛

      (黑龍江省科學(xué)院智能制造研究所,哈爾濱 150090)

      0 引言

      中藥丸的分揀包裝主要采用常工計數(shù)法[1]、機(jī)械計數(shù)法[2]、光電數(shù)粒機(jī)[3]等,這些方法計數(shù)速度慢,設(shè)備占地面積大,只能針對特定規(guī)格的中藥丸進(jìn)行計數(shù)分裝。隨著視覺檢測技術(shù)的發(fā)展,視覺數(shù)粒技術(shù)在藥片包裝中的應(yīng)用得到廣泛研究。姚瑩[4]等研制了一種平板式數(shù)粒機(jī),通過機(jī)器視覺系統(tǒng)及藥粒位置分析實現(xiàn)藥粒的快速準(zhǔn)確計數(shù)。DATA公司研制了ICU系列—基于機(jī)器視覺的高速藥粒數(shù)粒裝瓶機(jī),其結(jié)構(gòu)緊湊,計數(shù)準(zhǔn)確。但機(jī)器視覺計數(shù)容易受到外界條件的干擾,在我國藥廠難以普及,故研究基于機(jī)器視覺且計數(shù)精準(zhǔn)的高速藥粒計數(shù)系統(tǒng)具有廣闊的市場前景。針對基于機(jī)器視覺的高速在線藥粒計數(shù)系統(tǒng)方案,結(jié)合Dalsa線陣相機(jī)SDK、Opencv 4.55及Visual Studio 2019,設(shè)計了基于機(jī)器視覺的高速在線藥粒計數(shù)系統(tǒng)程序。

      1 硬件設(shè)計

      基于機(jī)器視覺的高速在線藥粒計數(shù)系統(tǒng)由線陣相機(jī)、振動盤、光源及PLC控制器組成(如圖1所示)。藥粒高速下落時可能發(fā)生碰撞等情況,軌跡變得不規(guī)則,通過線陣相機(jī)成像后,顆粒間的位置關(guān)系不再發(fā)生改變,可利用藥粒間的位置關(guān)系信息去除重復(fù)計數(shù)的藥粒,實現(xiàn)精準(zhǔn)計數(shù)。本系統(tǒng)選擇DALSA的LA-GM-04K08A-00-R型號線陣相機(jī),為減小運動模糊,攝像機(jī)的曝光時間很短,需要使用高強度的光源才能產(chǎn)生足夠的光通量,故采用面光源背向照明的方式,以突出其輪廓特征。

      圖1 基于機(jī)器視覺的高速在線藥粒計數(shù)系統(tǒng)Fig.1 High-speed on-line drug counting system based on machine vision

      2 程序設(shè)計

      2.1 線陣相機(jī)圖像采集及處理程序設(shè)計

      圖像采集事件處理類用于顯示采集的圖像,在顯示圖像的過程中需要將原始數(shù)據(jù)的BayerRG8圖像轉(zhuǎn)化為cv::Mat類型,以便通過OpenCV顯示。

      class CSampleCaptureEventHandler :public ICaptureEventHandler

      {

      {

      cv::Mat img(objImageDataPointer->GetHeight(),

      objImageDataPointer->GetWidth(), CV_8UC3);

      img.create(objImageDataPointer->GetHeight(),

      objImageDataPointer->GetWidth(), CV_8UC3);

      //假設(shè)原始數(shù)據(jù)是BayerRG8圖像

      void* pRGB24Buffer = objImageDataPointer->ConvertToRGB24(GX_BIT_0_7,GX_RAW2RGB_NEIGHBOUR, true);

      memcpy(img.data, pRGB24Buffer, (objImageDataPointer->GetHeight()) * (objImageDataPointer->GetWidth()) * 3);

      //顯示圖像

      cv::imshow(“Imager1”, img);

      cv::waitKey(1);

      }

      };

      線陣相機(jī)初始化包括SDK初始化、采集設(shè)備設(shè)置、數(shù)據(jù)緩存申請及傳輸?shù)攘鞒獭?/p>

      IGXFactory::GetInstance().Init();//SDK初始化

      m_pSampleCaptureEventHandle = new CSampleCaptureEventHandler();

      //采集設(shè)備設(shè)置

      m_AcqDevice = new SapAcqDevice(SapLocation(CStringA(“Linea_M4096-7um_1”), 0), NULL);

      m_AcqDevice->SetConfigFile(“D:\Program Files (x86)\CamFiles\User\T_Linea_M4096-7um_Default_Default.ccf”);

      //緩存申請

      m_Buffers = new SapBufferWithTrash(MAX_BUFFER, m_AcqDevice);

      //數(shù)據(jù)傳輸及回調(diào)函數(shù)

      m_Xfer = new SapAcqDeviceToBuf(m_AcqDevice, m_Buffers, XferCallback, this);

      m_Xfer->GetPair(0)->SetFramesPerCallback(m_nFramesPerCallback);

      nFramesPerCallback = m_Xfer->GetPair(0)->GetFramesPerCallback();

      開始采集時調(diào)用m_Xfer->Grab(),結(jié)束采集時調(diào)用m_Xfer->Freeze()。

      2.2 基于MFC的OpenCV圖像窗口顯示程序設(shè)計

      在基于MFC對話框的程序中將OpenCV的顯示窗口附著在MFC的CPictureCtrl控件上,聲明OpenCV窗口Imager1,根據(jù)CPictureCtrl控件大小調(diào)整OpenCV窗口Imager1的大小,并將其句柄附著在CPictureCtrl控件上。

      cv::namedWindow(“Imager1”, cv::WINDOW_NORMAL);

      CRect rect;

      GetDlgItem(IDC_PIC)->GetWindowRect(rect);

      cv::resizeWindow(“Imager1”, rect.Width(), rect.Height());

      HWND hWnd = (HWND)cvGetWindowHandle(“Imager1”);

      m_hOpenCVWnd = hWnd;

      HWND hParent = ::GetParent(hWnd);

      ::SetParent(hWnd, GetDlgItem(IDC_PIC)->m_hWnd);

      ::ShowWindow(hParent, SW_HIDE)。

      2.3 藥粒計數(shù)處理程序設(shè)計

      設(shè)計的藥粒計數(shù)程序流程如圖2所示,在圖像預(yù)處理的基礎(chǔ)上采用輪廓提取,根據(jù)輪廓面積進(jìn)行篩選,濾除噪聲干擾。判斷其是否是“8”字型粘連[5-6],如果是則采用距離變換的方法進(jìn)一步識別,若確認(rèn)是“8”字型粘連則計數(shù)加1。在前后兩幀圖像中,處于圖像邊緣的藥粒圖像可能因顯示不全而造成重復(fù)計數(shù),利用線陣相機(jī)成像后相對位置不發(fā)生改變的特點,對橫坐標(biāo)相等且在前后兩幀的上下邊緣處,根據(jù)公式剔除。

      圖2 “8”字型粘連分割Fig.2 “8” type adhesive segmentation

      圖3 相鄰兩幀圖像中藥粒重復(fù)計數(shù)剔除Fig.3 Repeated counting of eliminated Chinese medicine granules in adjacent frames

      圖4 藥粒計數(shù)處理程序流程Fig.4 Flow of drug counting processing program

      其中,Cs1與Cs2表示區(qū)域S1和S2的圓度,Cs1+s2表示區(qū)域S1與S2拼接后形成的區(qū)域的圓度,xs1與xs2表示區(qū)域S1與S2的中心水平位置,T1、T2及T3為閾值。區(qū)域的圓度與中心可以通過邊緣提取及外接矩形獲得。

      3 實驗系統(tǒng)及運行結(jié)果

      實物系統(tǒng)如圖5所示,配置如表1所示。

      表1 基于機(jī)器視覺的高速藥粒分裝裝置實驗設(shè)置Tab.1 Experimental setting of high speed drug dispensing device based on machine vision

      圖5 實驗系統(tǒng)實物Fig.5 Experimental system object

      系統(tǒng)界面及運行結(jié)果如圖6所示,程序中設(shè)置了計數(shù)目標(biāo),模擬裝瓶過程。圖中紅色矩形為識別出的“8”字型粘連,綠色與藍(lán)色矩形為前后兩幀重復(fù)計數(shù)剔除。

      圖6 基于機(jī)器視覺的高速在線藥粒計數(shù)系統(tǒng)程序界面及計數(shù)結(jié)果Fig.6 Program interface and counting result of high speed on-line drug count system based on machine vision

      從表2可以看出,系統(tǒng)計數(shù)精度達(dá)100%,可實現(xiàn)精準(zhǔn)計數(shù)。

      表2 計數(shù)實驗結(jié)果Tab.2 Results of counting experiment

      4 結(jié)論

      為實現(xiàn)中藥藥粒的高速計數(shù),結(jié)合Dalsa線陣相機(jī)SDK、Opencv 4.55及Visual Studio 2019,設(shè)計了基于機(jī)器視覺的高速在線藥粒計數(shù)系統(tǒng)程序。從計數(shù)實驗結(jié)果來看,此系統(tǒng)計數(shù)精度達(dá)100%,可滿足藥廠對藥粒分裝的精度要求,具有十分廣闊的市場前景。

      猜你喜歡
      字型控件計數(shù)
      看“字型”找相似
      古人計數(shù)
      遞歸計數(shù)的六種方式
      古代的計數(shù)方法
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      這樣“計數(shù)”不惱人
      設(shè)施克瑞森無核葡萄“廠”字型架式栽培關(guān)鍵技術(shù)
      冬小麥“井”字型播種模式的研究探討
      “一字型”折疊翼展開試驗與仿真驗證分析
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      广昌县| 彝良县| 庄河市| 胶南市| 衢州市| 瓦房店市| 万载县| 三江| 隆德县| 永顺县| 全椒县| 宝兴县| 樟树市| 容城县| 武鸣县| 石家庄市| 石渠县| 河东区| 唐海县| 班玛县| 绥芬河市| 东乌珠穆沁旗| 新乡县| 汉阴县| 黎平县| 邢台县| 涪陵区| 忻城县| 蓝山县| 文昌市| 永和县| 库尔勒市| 铜山县| 盐边县| 资溪县| 收藏| 咸阳市| 武汉市| 景东| 平江县| 海淀区|