108 lines
5.6 KiB
Plaintext
108 lines
5.6 KiB
Plaintext
{
|
|
"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
|
|
} |