Thông báo

Collapse
No announcement yet.

Phát triển ứng dụng thu thập và xử lí hình ảnh từ Webcam bởi LabVIEW.

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Phát triển ứng dụng thu thập và xử lí hình ảnh từ Webcam bởi LabVIEW.

    LabVIEW giúp bạn có thể xây dựng một hệ thống giám sát an ninh chỉ bởi bằng những Webcam với giá cực rẻ.

    Phương pháp 1: Sử dụng sự hỗ trợ của thư viện liên kết động.
    Nhờ vào sự hỗ trợ của hai bộ thư viện liên kết động là Avicap32.dll và user32.dll chúng ta có thể dễ dàng có được một ứng dụng thu nhận tín hiệu video hoặc chụp hình bằng LabVIEW và một webcam thông dụng.
    Avicap32.dll là một thư viện liên kết động chứa đựng các hàm cơ bản hỗ trợ hệ điều hành Window trong việc chụp hình và truyền nhận tín hiệu video từ một thiết bị ngoại vi. Thư viện này được phát triển bởi Microsoft và nó là một phần của hệ điều hành. Một khi hệ điều hành được cài đặt, avicap32.dll sẽ được lưu trữ trong thư mục mặc định là C:/ Windows/ System32/ avicap32.dll.
    Trong khi đó thư viện User32.dll cung cấp các hàm dùng để phát triển và quản lí màn hình window (Bố trí các icon, sắp xếp hay cấu hình kích cỡ màn hình, thanh trạng thái). Đây là một thành phần cốt lõi của hệ điều hành Window (C:\ Windows\ system 32). Nếu không có thư viện này hoặc thư viện này bị xoá, gỡ bỏ thì hệ điều hành sẽ không hoạt động.
    Để thực thi việc chụp hình hay thu nhận tín hiệu từ thiết bị webcam, sau đó cho hiển thị trên front panel, trong LabVIEW chúng ta sử dụng hàm Call Library Function node gọi các hàm từ trong thư viện avicap32 và user32 ra. Cấu hình các thuộc tính cho các hàm đó.
    Làm thế nào để cấu hình các thuộc tính hay còn gọn là các biến, tham số của hàm? Bởi vì các hàm trong thư viện liên kết động đều là thành phần của hệ điều hành window nên chúng ta dễ dàng tìm thấy các yêu cầu về các tham số, biến số trong website hỗ trợ của Microsoft.
    Ví dụ như, để chụp hình bằng hàm capcreatecapturewindow trong thư viện avicap32.dll, chúng ta không biết được cấu trúc của hàm này, khi đó ta vào địa chỉ website hỗ trợ của Microsoft cho hàm này ta sẽ có được các thông tin đó.

    Nội dung cấu trúc của hàm capcreatecaptureWindow trong thư viện Microsoft (Trên) và trong LabVIEW (Dưới)
    HWND VFWAPI capCreateCaptureWindow(
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    int x,
    int y,
    int nWidth,
    int nHeight,
    HWND hWnd,
    int nID
    );

    Sau khi cấu hình cho hàm, ta viết code trong block digram như sau. Chú ý là đối tượng PictureBox được lấy từ control pallet


    Ngoài ra để hoàn thiện chương trình ta phải sử dụng thêm hàm SendMessage trong thư viện của User32.dll sau khi đã cấu hình cho webcam bởi hàm capCreateCaptureWindow trên đây.
    Tuy nhiên một điều cần lưu ý là ứng dụng viết bởi avicap32.dll sẽ không điều chỉnh được độ phân giải bởi vì các hàm trong avicap32.dll chỉ đơn thuần hỗ trợ việc thu nhận tín hiệu
    video và chụp hình….

    Phương pháp 2: Sử dụng bộ thư viện webcam USB

    Phương pháp 1 đòi hỏi người lập trình với webcam cần phải có một kiến thức nhất định về thu nhân hình ảnh, các hàm và chức năng của thư viện liên kết động, cấu trúc của hàm LabVIEW gọi các hàm từ
    trong thư viện liên kết động. Thì có một phương pháp khác đơn giản hơn nhiều mà không đòi hỏi người lập trình LabVIEW một kiến thức cao về hệ điều hành hay các thư viện của Microsoft. Đó là sử dụng bộ thư viên cho các loại USB webcam do cộng động sử dụng LabVIEW xây dựng (Đây không phải là bộ toolkit của NI và được hoàn toàn miễn phí).
    Trước hết, download bộ thư viện các hàm truyền nhân dành cho USB webcam ở đây
    Giải nén các file vừa download và copy vào thư mục user.lib folder. Lưu ý, nếu trên máy tính cài nhiều phiên bản của LabVIEW thì bạn phải quyết định copy thư viện trên tương ứng với thư viện người dùng trên chính phiên bản đó. Như vậy thì trên function pallet của LabVIEW phiên bản đó mới hiện ra các hàm hỗ trợ webcam USB này. Ví dụ như ở dưới đây:

    Khi đó, việc tiến hành viết một ứng dụng để thu nhận hình ảnh, tín hiệu video từ webcam được tiến hành một cách đơn giản như sau:


    Đầu tiên, phải thiết lập các thông số ban đầu cho webcam (Webca, Initialize VI). Các thông số này bao gồm: Webcam số mấy trong số các webcam kết nối vào máy tính, chiều cao và độ rộng của hình ảnh. Sau đó tiến hành chụp hình từ webcam (Webcam Grab), chuyển tín hiệu chụp được thành hình ảnh (Webcam Picture VI). Đưa hình ảnh thu được lên
    giao diện (Webcam flat to picture VI). Cuối cùng là đóng kết nối với webcam đó lại (Webcam Close VI).

    Phương pháp 3: Sử dụng sự trợ giúp của NI Vision assistant.
    Còn có thêm một phương pháp đơn giản hơn nữa đó là sử dụng NI Vision Assistant (Và vì sử dụng nó quá đơn giản trong các nhiệm vụ truyền nhận hình ảnh, video nên bạn phải trả
    tiền_còn không thì phải xài bản Evaluation, mà với phiên bản Evaluation thì không thể sử dụng tính năng buid ứng dụng thành code LabVIEW hay C).
    NI Vision assistant là một gói phần mềm riêng biệt với LabVIEW có thể dùng để xây dựng nên các ứng dụng liên quan đến thu nhận và truyền dữ liệu hình ảnh, video từ các thiết bị ngoại vi. Với phiên bản từ 2009, NI Vision assistant có thể làm việc với các loại camera của nhiều hãng sản xuất, các loại webcam USB, smart camera của NI…Một ưu điểm rất
    mạnh của NI vision assistant là mặc dù nó có thể hoạt động độc lập với LabVIEW song nó cũng có thể xuất các ứng dụng của nó ra các LabVIEW VI. Các VI này hoàn toàn có thể
    được sử dụng như các VI bình thường trong bất kì chương trình LabVIEW nào. Ngoài ra, nó còn có thể xuất các ứng dụng của nó ra các hàm trong C hay LabWindow.
    Đây là một gói phần mềm yêu cầu license riêng nên người dùng phải trả tiền (Hoặc tìm cách *****). Cách sử dụng thật hết sức đơn giản.
    Trước hết khởi động NI Vision Assitant từ Start/Program hoặc có thể khởi động từ chính LabVIEW. Nếu bạn có một thiết bị thu nhận hình ảnh (camera hay webcam) và bạn muốn
    truyền nhận hình ảnh trực tiếp từ thiết bị đó thì nhớ chọn chế độ hoạt động acquire Image.
    Sau khi khởi động xong, màn hình giao diện sẽ có dạng như dưới đây.
    Tiếp theo là phần cấu hình và thiết lập cho camera của bạn. Tuỳ thuộc vào loại thiết bị camera kết nối vào máy tính của mình, bạn có thể lựa chọn tương ứng với các chế độ thiết lập ban đầu của NI Smart
    Cameras, digital and analog frame grabbers, DCAM-compliant IEEE 1394 cameras, Gigabit Ethernet (GigE) Vision cameras hoặc một thiết bị USB webcam nào đó. ở đây, tôi sử dụng loại webcam ZS0211 của nhà sản xuất Vimocro nên tôi sẽ lựa chọn cấu hình Acquire Image (1394,GigE or USB).

    Khi đó, tôi sẽ có thể cấu hình cho thiết bị của mình với các thông số như sau.
    Target: Sử dụng camera trên chính máy của mình hay máy tính nào đó trong mạng máy tính. Tuy nhiên đối với thiết bị USB webcam thì không hỗ trợ chức năng truyền nhận tín hiệu hình ảnh từ một webcam gắn trên máy tính khác trong mạng.
    Devices: Lựa chọn một camera trong số các camera kết nối với thiết bị.
    Video Mode: Lựa chọn chế độ hoạt động của camera. Đối với các loại camera thông minh, hiện đại khác thì có nhiều chế độ hoạt động, nhưng đối với webcam mà tôi đang sử
    dụng thì các lựa chọn trong Video mode chỉ đơn thuần là kích cỡ, tiêu chuẩn khung hình ảnh mà sẽ hiện thỉ (ví dụ: 640x480 RGB24 15.00fps là sự lựa chọn của tôi cho ví dụ này).
    Tiếp theo là thực hiện các quá trình thu nhận tín hiệu theo các chức năng có sẵn trên giao diện chương trình:
    Acquire Single Image - Chỉ truyền nhận và hiển thị một khung hình ảnh đơn lẻ.
    Acquire Continuous Images - Cho phép truyền nhận hình ảnh một cách liên tục (Video)
    Sequence Acquisition - Thu nhận hình ảnh một cách tuần tự. Bạn có thể thiết lập số lượng khung hình mà chương trình sẽ truyền nhận, thời điểm bắt đầu và kết thúc của việc
    truyền nhận tín hiệu.
    Còn nữa...(http://www.ino.com.vn)
    Last edited by INOmeasure; 31-03-2011, 00:50. Lý do: add download link to http://www.ino.com.vn for the library USB Webcam.
    What is INO measure?
    Finding answer on the site

  • #2
    Một số hình ảnh thu được từ các ứng dụng với webcam & LabVIEW

    Phương pháp 1: Sử dụng cho 2 webcam của hai hãng khác nhau (Dell và Vimicro)



    Phương pháp 2: Sử dụng bộ thư viện USB webcam


    Phương pháp 3: Với sự trợ giúp của Vision assistant
    What is INO measure?
    Finding answer on the site

    Comment


    • #3
      chào anh!! em đang tìm hiểu về xử lý ảnh dùng labview !! Khi em thực hiện cách thứ 2 giông như anh hướng dẫn thì -> không hiện ảnh trên Picture.
      Em xử dụng webcam có sẵn trên laptop!! Không biết có ảnh hưởng gì đến hình ảnh hiện thị không anh!!
      Mong anh giúp đỡ!! anh có thể cho em Mail để tiện liên lạc được không?
      Cảm ơn anh nhiều!

      Comment


      • #4
        Để xây dựng một chương trình thu nhận và xử lý ảnh bằng LabVIEW, các bạn cài thêm tool NI Vision.
        Chúc vui!
        All in one. Sài Gòn + Đồng Nai.

        Comment


        • #5
          anh ơi!! giúp em với!!! anh có thể gửi đường link tới file download Ni vision được không? em tải NI Vision assitance nhưng mà không được!
          cảm ơn anh!!

          Comment


          • #6
            Bạn có thể download các phần mềm LabVIEW nói chung và các gói hỗ trợ xử lí ảnh từ địa chỉ của website INO company. Đây là những đường link download trực tiếp ftp.
            Bên cạnh đó, bạn nên tham khảo qua bài viết từ website NI cho các yêu cầu về phần mềm, hệ thống và các lưu ý có thể gây ảnh hưởng tới quá trình truyền nhận hình ảnh từ webcam.
            Đường link tới bài viết của ni
            What is INO measure?
            Finding answer on the site

            Comment


            • #7
              Anh cho em hỏi đóng gói chương trình như thế nào vậy anh ?
              Last edited by boynuithanh; 29-07-2011, 20:19.

              Comment


              • #8
                Ban vao chuyen muc labview tren website cua cong ty INO de doc bai huong dan ve cach dong goi chuong trinh labview nhe. http:// ino.com.vn
                What is INO measure?
                Finding answer on the site

                Comment


                • #9
                  chào anh!!! em đã đọc và thàm thử thành công với các chương trình khác...
                  Nhưng phần chương trình em gửi anh thi no van không chạy--ngay khi nhận PORT CARD thì bị treo ngay,+ Đèn LED hiển thị bênh cạnh switch vẫn không sáng..
                  Em đã đóng gói không có While..
                  EM vẫn không tìm ra lỗi ở đâu!! mong anh giúp đỡ..

                  Comment


                  • #10
                    Trước khi bạn đóng gói thì chương trình có chạy bình thường không? Nếu không thì bạn cần debug chương trình để biết lỗi treo máy đến từ đâu nhé. Và, thông thường, khi trao đổi về LabVIEW thì các bạn cố gắng Post cả code của các mình để tiết kiệm thời gian trao đổi lại nhé (Bằng cách gửi file hoặc chụp hình block diagram của ứng dụng).
                    Bạn có thể gửi email cho chúng tôi đề nghị giúp đỡ:
                    support@ino.com.vn
                    What is INO measure?
                    Finding answer on the site

                    Comment

                    Về tác giả

                    Collapse

                    INOmeasure Tìm hiểu thêm về INOmeasure

                    Bài viết mới nhất

                    Collapse

                    Đang tải...
                    X