Vinova tuyển lập trình viên Mobile & Web ở Hà Nội, lương $300-1000

Article: Dùng webcam làm camera chống trộm 9516

ngocdaothanh.myopenid.com 172
Over 3 years ago

Webcam bây giờ rẻ bèo, 10 người có lẽ 8 9 người đã có webcam. Nếu khéo léo tận dụng được điều này vào ứng dụng xử lí ảnh, ta có thể tạo được thị trường.

Bài viết này bàn cách viết chương trình có tính năng sau:

  • Dùng flash làm client để thu và xử lí video từ webcam. Flash có nhiều ưu điểm, lớn nhất là chỉ cần mở trình duyệt là dùng được ngay, không phải cài đặt.
  • Khi phát hiện hình ảnh chuyển động, client sẽ gửi ảnh đến server trung gian. Server sẽ gửi ảnh vào email của người dùng.

Server viết bằng Rails. Dữ liệu truyền qua lại giữa client-server có format do ta tự định nghĩa. Phần bóc tách (parse) dữ liệu sử dụng những điều trình bày trong bài viết Tự chỉ định và xử lí MIME trong Rails.

Client

Để tạo client, có thể dùng Adobe Flash mất tiền hoặc Flex miễn phí. Việc cài đặt và sử dụng chúng nằm ngoài khuôn khổ bài viết ngắn này.

Thu và hiển thị ảnh từ webcam

Xin xem tài liệu này, nó chỉ dẫn rất căn cơ về cách dùng webcam.

Phát hiện ảnh chuyển động

Ta dùng thuật toán đơn giản sau:

  • Lấy dữ liệu bitmap từ camera theo frame (webcam thường 15frame/s). Vì mỗi điểm ảnh có 3 kênh RGB kiểu vector, nên để tính toán số học, cần chuyển thành kiểu vô hướng 1 kênh. Tóm lại cần chuyển ảnh màu thành ảnh grayscale (<- có thế thôi mà dẫn cả vector ra, nhiều chuyện ghê{#emotions_dlg.laughing}).
  • Lấy giá trị của từng điểm ảnh của frame này trừ đi giá trị của từng điểm ảnh của frame trước đó, rồi lấy giá trị tuyệt đối của hiệu.
  • Cộng tất cả các giá trị tuyệt đối lại, nếu lớn hơn ngưỡng nào đó, thì phán là có chuyển động (trộm loay hoay trước laptop của ta chẳng hạn{#emotions_dlg.surprised}).

Ảnh webcam thường có kích thước 320x240 (= 76800) hoặc 640x480 (= 307200), số điểm ảnh khá lớn, thời gian tính toán lâu. Có thể cải tiến như sau:

  • Trộm nhanh tay lắm thì cũng mất chừng vài giây, nên cứ sau vài giây lặp lại quá trình tính toán trên cũng vẫn an toàn.
  • Thay tính trên toàn bộ tất cả điểm ảnh của 1 frame, có thể nhảy cóc 5 điểm ảnh chẳng hạn.
  • Công thức phổ biến để chuyển ảnh màu thành grayscale là: Y = 0.3R + 0.59G + 0.11B. Tuy nhiên, vì ảnh grayscale này không được hiển thị, quá trình tính toán chỉ là trung gian, nên để tăng tốc độ xử lí, ta dùng công thức: Y = 30R + 59G + 11B. CPU thực hiện phép cộng nhanh hơn phép nhân, phép nhân số nguyên nhanh hơn nhân số thực.

Server

Sau khi chộp được ảnh tên trộm, ta có nhu cầu gửi ảnh vào email chứ không lưu xuống đĩa cứng, phòng trường hợp tên trộm cuỗm luôn cả giàn máy hoặc laptop thì toi công.

Để gửi ảnh từ flash vào email, ta cần viết thêm server trung gian.

[còn tiếp]

Comments

ngocdaothanh.myopenid.com 172
over 3 years ago

Cảm ơn otaku góp ý, tôi sẽ tìm hiểu xem sao, nếu có sẵn thế này chắc tốc độ xử lí nhanh hơn. Ở đây có bài hướng dẫn về motion dection cho Flash 8 (AS2).

otaku-2r.myopenid.com 2
Updated over 3 years ago

Nếu tôi nhớ ko nhầm thì lớp Camera trong Flash có thuộc tính là motionLevel (0-100) thì phải, cái này kết hợp với Camera.onActivity để trigger khi phát hiện chuyển động. motionLevel càng nhỏ thì càng nhạy với chuyển động. Xem thêm ở đây

(Sửa lại một chút)

dangtrieu.myopenid.com 5
over 3 years ago

Chống trộm kiểu này thì cô vợ xinh xinh hay chú mèo ngộ nghĩnh cũng thành trộm quá {#emotions_dlg.sealed}

otaku-2r.myopenid.com 2
Updated over 3 years ago
Chống trộm kiểu này thì cô vợ xinh xinh hay chú mèo ngộ nghĩnh cũng thành trộm quá {#emotions_dlg.sealed}

Đây là hệ thống sờ cu rờ ti mà, nếu đồng chí cần giám sát cả vợ lẫn con mèo thì hệ thống này cũng có thể đáp ứng vì cứ có ...chuyển động là ghi lại tuốt {#emotions_dlg.cool}.

Khi đã có PC & Webcam, nếu như kết hợp:

Flash + Red5 + FFMPEG + PHP + MySQL

Sản phẩm có thể có là:

  1. Hệ thống giám sát online tương đối rẻ xiền.
  2. Một tính năng hao hao như YouTube Quick Capture
  3. E-learning.
  4. Video conference.
  5. Whatever... tuỳ vào trí tưởng tượng {#emotions_dlg.wink}.

phananhvu.myopenid.com 125
Updated over 3 years ago

trộm loay hoay trước laptop của ta chẳng hạn{#emotions_dlg.surprised}

Sao nghe quen quen thế nhỉ {#emotions_dlg.cry}

Ở client thì cốt lõi vấn đề là hàm motionLevel để phát hiện chuyển động thôi :D Nhược điểm của việc dùng motionLevel là bất cứ chuyển động nào nằm trong "thị trường" của camera là nó tính luôn là chuyển động. Dựa vào việc phát hiện chuyển động nhờ hình ảnh thu được từ webcam thì bịa ra được khá nhiều thứ. Ví dụ như:

  • Có thằng bịa ra cái giám sát trẻ em.
  • Ai đó thì làm ra cái giám sát người ra vào phòng.
  • Người thì bịa ra cái quan sát vợ :D
  • ...

Để giải quyết vấn đề nhận lầm thì có thể có giải pháp là đặt camera hợp lí. Ví dụ quan sát mèo ăn vụng thì chiếu vô lồng bàn, quan sát người qua cửa thì chiếu vào cửa, quan sát vợ thì đặt camera phải chiếu vào ベッド rồi :D hihihi

Sau khi client báo lên thì server có thể:

  • Gửi mail.
  • Gửi SMS.
  • Gọi điện thoai.
  • Réo chuông inh ỏi.
  • ...

Sau này cái webcam, cái giường, ... được nối mạng thì chỉ cần cảm biến của cái giường nhận ra được chuyển động quen thuộc vào thời điểm không hợp lí là nó kết nối internet, gửi SMS cho cô vợ và thế là có người 焼きもち ngay :)) Sản phẩm này có lẽ bán rất chạy ở Pháp :P

otaku-2r.myopenid.com 2
over 3 years ago
  • Có thằng bịa ra cái giám sát trẻ em.
  • Ai đó thì làm ra cái giám sát người ra vào phòng.
  • Người thì bịa ra cái quan sát vợ :D
  • ...

Những ai thế nhỉ {#emotions_dlg.sealed}

Sau này cái webcam, cái giường, ... được nối mạng thì chỉ cần cảm biến của cái giường nhận ra được chuyển động quen thuộc vào thời điểm không hợp lí là nó kết nối internet, gửi SMS cho cô vợ và thế là có người 焼きもち ngay :)) Sản phẩm này có lẽ bán rất chạy ở Pháp :P

Nói cụ thể "chuyển động quen thuộc" thì nó như thế nào? Có bao nhiêu loại? {#emotions_dlg.cool}

 

You must login to be able to comment

Uploaded files

No file uploaded yet

You must login to be able to upload

Nhà tài trợ:

Mọi người đều tự do viết bài, sửa bài của người khác, và bình luận ở trang web này. Bạn muốn chủ động tạo bài mới để chia sẻ kinh nghiệm với mọi người? Xin click link ở dưới.

Create new content