{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## การตรวจจับการเคลื่อนไหวของฝ่ามือด้วย Optical Flow\n", "\n", "แลปนี้เป็นส่วนหนึ่งของ [AI for Beginners Curriculum](http://aka.ms/ai-beginners)\n", "\n", "ลองพิจารณา [วิดีโอนี้](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) ซึ่งในวิดีโอนั้นฝ่ามือของคนเคลื่อนที่ไปทางซ้าย/ขวา/ขึ้น/ลง บนพื้นหลังที่นิ่ง\n", "\n", "**เป้าหมายของคุณ** คือการใช้ Optical Flow เพื่อตรวจสอบว่าส่วนใดของวิดีโอที่มีการเคลื่อนไหวขึ้น/ลง/ซ้าย/ขวา\n", "\n", "เริ่มต้นด้วยการดึงเฟรมของวิดีโอตามที่อธิบายไว้ในบทเรียน:\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ตอนนี้คำนวณเฟรมการไหลเชิงแสงแบบหนาแน่นตามที่อธิบายไว้ในบรรยาย และแปลงการไหลเชิงแสงแบบหนาแน่นเป็นพิกัดเชิงขั้ว:\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "สร้างฮิสโตแกรมของทิศทางสำหรับแต่ละเฟรมของ optical flow ฮิสโตแกรมจะแสดงจำนวนเวกเตอร์ที่อยู่ในแต่ละช่วง และควรแยกทิศทางการเคลื่อนไหวที่แตกต่างกันบนเฟรมออกจากกัน\n", "\n", "> คุณอาจต้องการลบเวกเตอร์ทั้งหมดที่มีขนาดต่ำกว่าค่าที่กำหนดไว้ วิธีนี้จะช่วยกำจัดการเคลื่อนไหวเล็กๆ น้อยๆ ในวิดีโอ เช่น การเคลื่อนไหวของดวงตาและศีรษะ\n", "\n", "วาดกราฟฮิสโตแกรมสำหรับบางเฟรม\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "การดูฮิสโตแกรม ควรจะค่อนข้างตรงไปตรงมาว่าจะกำหนดทิศทางการเคลื่อนไหวอย่างไร คุณต้องเลือกช่องที่สอดคล้องกับทิศทางขึ้น/ลง/ซ้าย/ขวา และที่อยู่เหนือเกณฑ์ที่กำหนด\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ขอแสดงความยินดี! หากคุณได้ทำทุกขั้นตอนข้างต้นเสร็จสิ้น คุณได้ทำแลปเสร็จเรียบร้อยแล้ว!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n---\n\n**ข้อจำกัดความรับผิดชอบ**: \nเอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้บริการแปลภาษาจากผู้เชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้\n" ] } ], "metadata": { "language_info": { "name": "python" }, "orig_nbformat": 4, "coopTranslator": { "original_hash": "153d9e417e079bf62f8f693002d0deaf", "translation_date": "2025-08-29T09:59:46+00:00", "source_file": "lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb", "language_code": "th" } }, "nbformat": 4, "nbformat_minor": 2 }