Code xử lý ảnh và chương trình phân đoạn video

Thứ tư , 15/03/2017, 07:16 GMT+7
     

Các bài trước chúng ta đã đi qua một số hướng dẫn code các bài tập về xư lý ảnh trong đồ họa máy tính

         + Code chương trình vẽ đồ thị hàm số bằng C#

         + Code mô phỏng quản lý hành lý ở sân bay

         + Chương trình xử lý ảnh code C# bằng OpenCV trong đồ họa máy tính

Code chương trình Phân đoạn video trong môn đồ họa máy tính

       Lời mở đầu

          Phân đoạn video là một trong những ứng dụng quan trọng trong xử lý ảnh, tuy nhiên chưa có một thuật toán xác định nào cho tất cả các trường hợp. Chương trình sau thực hiện sau đây áp dụng thuật toán căn bản nhất của xử lý phân đoạn video, thuật toán nền cố định (fixed background).

1. GIỚI THIỆU

1.1  Đặt vấn đề

         -    Phân vùng ảnh là bước then chốt trong xử lý ảnh. Giai đoạn nhằm phân tích ảnh thành những thành phần có cùng tính chất nào đó dựa theo biên hay các vùng liên thông.

         -    Tiêu chuẩn để xác định các vùng liên thông có thể là cùng mức xám, cùng màu hay cùng độ nhám…

         -    Đồ án chúng tôi thực hiện nhằm phân vùng background của trong 1 video hoặc 1 đoạn webcame.

         -    Cấu trúc của 1 video hoặc 1 đoạn webcame là sự ghép của nhiều ảnh và thay đổi với thời gian ms, do đó tạo cảm giác chuyển động cho mắt người xem.

1.2  Mô tả đề tài

      -   Chương trình được xây dựng nhằm mục đích hiện thực hóa việc sử dụng thuật toán phân vùng ảnh áp dụng với video hoặc webcame.

           +  Cho phép người dùng input 1 đoạn video tại thư mục debug của chương trình, hoặc bật đèn webcame thực hiện các chức năng sau:

           +  Tạo các cửa sổ kết quả về hình ảnh, background.

           +  Hình ảnh thể hiện dưới dạng trắng đen

2.  PHÂN TÍCH YÊU CẦU

2.1   Yêu cầu chức năng

      -   Người dùng input đoạn video vào folder debug của chương trình hoặc chọn chức năng webcame, chương trình tự động bật webcame:

             +  Xuất các cửa sổ kết quả về hình ảnhbackground và ảnh hiện tại.

3.  THIẾT KẾ - CÀI ĐẶT

3.1  Thiết kế dữ liệu

    -   Sử dụng bộ thư viện OpenCV cung cấp

    -   Sử dụng các kiểu dữ liệu thư viện opencv cung cấp.

    -   Các dữ liệu chương trình thực thi gọi từ dữ liệu của máy và folder debug của chương trình.

3.2  Thiết kế xử lý

    -    Giao diện chương trình được thiết kế bằng trên Console, đuôi mở rộng là *.cpp.

    -   Thuật toán được sử dụng có 2 bước chính:

        1.   Nhận diện  background bằng cách xét chuyển động:

             -  Background là các chi tiết không chuyển động, màu sắc thay đổi tuy nhiên vị trí gần như không đổi.

        2.  Tạo cửa sổ hình ảnh: Sử dụng các hàm có sẵn thư viên opencv hỗ trợ để khởi tạo các cửa sổ.

             -   Chương trình có các hàm chính:

                 +  Hàm AllocateImage:Phân đoạn ảnh được cung cấp vào từ tham số

                 +  Hàm accumulateBackground: Tích lũy ảnh BackGround-làm ảnh cơ sở. Do Chương trình là chưa hoàn thiện nên em cho lúc đầu khởi động Camera là lúc chụp lấy ảnh ban đầu làm ảnh nền.

                 +  Hàm backgroundDiff xét các điểm ảnh từ tham số để tìm điểm ảnh sai khác

                 +  Hàm DeallocateImage: Hủy (giải phóng )các biến ảnh

                 +  Hàm main(): Thực thi các chức năng của chương trình cung cấp

Thuật toán:

        + Với thuật toán này Mô hình BG được sử dụng luôn cố định là một ảnh (frame) đầu vào làm giá trị khởi tạo cho thuật toán.

        + Tại các khung hình (frame) tiếp theo, thao tác backgroundDiff chỉ đơn giản là tính ra một ảnh lưu sự khác biệt của từng điểm ảnh giữa khung hình hiện tại và ảnh ban đầu(BG)

Sơ đồ thuật toán:

         1.    AllocateImages( frame );// xử lí ảnh ban đầu vào để lấy ảnh BG

         2.    accumulateBackground( frame );// quá trình tích lũy ảnh làm BG tầm 30 lần lặp while                     

         3.    createModelsfromStats();// chuyển đổi Data Type ảnh đã tích lũy được

         4.    backgroundDiff( frame, mask1 );// xác định các fame tiếp theo tìm ra điểm sai khác       

         5.    cvShowImage("Background Averaging", frame );// in ra màn hình ảnh BackGround và các điểm sai khác trong các fame tiếp theo

 

4.   KẾT LUẬN

4.1  Nhận xét

 -  Ưu điểm:

+   Code ngắn gọn, đơn giản.

+    Chương trình thực thi ổn

+    Đáp ứng 1 phần chức năng của yêu cầu đề tài.

+   Sử dụng được các kiến thức về xử lý ảnh bằng cách sử dụng opencv.

-   Nhược điểm:

+   Code chưa được tường minh do sử dụng nhiều hàm rút gọn của thư viện.

+   Hình ảnh chương trình chưa được sắc nét, chủ yếu là gam màu trắng đen.

+   Chức năng background CHƯA thể cập nhật tự động(chỉ mới lấy được ảnh ban đầu làm background).

5.    HƯỚNG DẪN SỬ DỤNG

a. Chức năng phụ

    -    Giao diện console:

         +  Phím l: Để cập nhật lại ảnh Background.

         +  Bấm ESC để thoát CT

   -  Thêm vào thư mục System32 3 file dll: MSVCP71D.dll, msvcr71d.dll, tbb_debug.dll đã được đính kèm theo chương trình, chạy file .exe trong folder debug của chương trình.

b. Yêu cầu môi trường

     -   Hệ điều hành Winndows phiên bản XP trở lên.

     -   Ram 512MB

     -   Trong System32 phải có 3 file dll: MSVCP71D.dll, msvcr71d.dll, tbb_debug.dll.

     -    Nếu muốn test code của chương trình yêu cầu máy có cài đặt Visual Studio C# 2010, opencv 2.3.1

     -    Phát triển phiên bản cho hệ điều hành mã nguồn mở như các Distro của hệ điều hành Linux: Ubuntu, CentOS…

6.  TÀI LIỆU THAM KHẢO

   BackgroundSubtractionReview-Piccardi.pdf

   stauffer_cvpr98_track.pdf

   OReilly-LearningOpenCV.pdf

   http://congnghegi.com/source-code/

Keyword: xử lý ảnh, giáo trình xuer lý ảnh, code chuong trình cử lý ảnh, code phân đoạn video, code C#, đồ họa máy tính,code phân đoạn vide openCV, opencv,fixed background, uit,đò án C#, môn đồ họa máy tính,BackgroundSubtraction, thuật toán xử lý ảnh, thuật toán BackgroundSubtraction,

Download Source: chương trình phân đoạn video

opencv fixed background đồ họa máy tính code phân đoạn vide openCV BackgroundSubtraction