ถัว เฉลี่ยเคลื่อนที่ opencv


วิธีประหลาดที่ค่าเฉลี่ยเคลื่อนที่พังทลายจากมวลของการวัดที่เกิดความสับสนสามารถมองเห็นได้ด้วยการคำนวณค่าเฉลี่ยเคลื่อนที่ 10 วันพร้อมกับน้ำหนักของทุกวันที่แสดงเป็นเพชรขนาดเล็ก ค่าเฉลี่ยเคลื่อนที่ที่เราใช้จนถึงปัจจุบันให้ความสำคัญเท่ากันทุกวันโดยเฉลี่ย นี้ไม่จำเป็นต้องเป็นเช่นนั้น หากคุณคิดถึงเรื่องนี้ก็จะไม่เกิดขึ้นมากนักโดยเฉพาะอย่างยิ่งหากคุณสนใจที่จะใช้ค่าเฉลี่ยเคลื่อนที่ระยะยาวเพื่อให้เกิดการกระแทกแบบสุ่มในแนวโน้ม สมมติว่าคุณใช้ค่าเฉลี่ยเคลื่อนที่ 20 วัน เหตุผลที่น้ำหนักของคุณเกือบ 3 สัปดาห์ที่ผ่านมาถือเป็นสัดส่วนที่เท่าเทียมกันกับแนวโน้มปัจจุบันเนื่องจากน้ำหนักของคุณในเช้านี้รูปแบบต่างๆของค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนักได้รับการพัฒนาขึ้นเพื่อคัดค้านข้อคัดค้านนี้ แทนที่จะเพิ่มการวัดเป็นเวลาหลายวันและหารด้วยจำนวนวันในการวัดค่าเฉลี่ยถ่วงน้ำหนักที่วัดแต่ละครั้งจะคูณด้วยปัจจัยน้ำหนักซึ่งแตกต่างกันไปในแต่ละวัน ผลรวมสุดท้ายถูกแบ่งออกไม่ใช่จำนวนวัน แต่โดยรวมของปัจจัยน้ำหนักทั้งหมด หากใช้ปัจจัยน้ำหนักมากขึ้นในช่วงไม่กี่วันที่ผ่านมาและปัจจัยที่มีขนาดเล็กกว่าสำหรับการวัดต่อไปในช่วงเวลาดังกล่าวแนวโน้มจะตอบสนองต่อการเปลี่ยนแปลงล่าสุดโดยเร็วยิ่งขึ้นโดยไม่ต้องเสียสละให้ค่าเฉลี่ยเคลื่อนที่ ค่าเฉลี่ยเคลื่อนที่ที่ไม่มีการชั่งน้ำหนักเป็นเพียงค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนักโดยมีปัจจัยน้ำหนักเท่ากับ 1 คุณสามารถใช้ปัจจัยน้ำหนักใด ๆ ที่คุณต้องการได้ แต่ชุดค่าผสมเฉพาะที่มีค่าเฉลี่ยเคลื่อนที่ที่ขรุขระระดับก้าวหน้าชี้แจงได้พิสูจน์แล้วว่าเป็นประโยชน์ในการใช้งานตั้งแต่เรดาร์ป้องกันทางอากาศ การค้าตลาดท้องหมูในชิคาโก ปล่อยให้มันทำงานบนท้องของเราเช่นกัน กราฟนี้จะเปรียบเทียบค่าน้ำหนักของค่าเฉลี่ยเคลื่อนที่ 20 วันที่มีการเคลื่อนไหวอย่างคล่องตัวและมีค่าเฉลี่ยเคลื่อนที่โดยเฉลี่ยที่น้ำหนักทุกวันอย่างเท่าเทียมกัน การคำนวณให้เรียบในวันนี้ทำให้การวัดในปัจจุบันมีความสำคัญมากขึ้นโดยเฉลี่ยเพียงเล็กน้อยจะกำหนดค่าเฉลี่ยของวันวานเล็กน้อยน้อยกว่านั้นและทุกๆวันต่อ ๆ ไปน้อยกว่ารุ่นก่อนที่มีวันที่ 20 มีผลเพียง 20 เท่าตามที่ได้ผลกับค่าเฉลี่ยเคลื่อนที่ที่เรียบง่าย ปัจจัยน้ำหนักในค่าเฉลี่ยเคลื่อนที่แบบวนเชิงศูนย์กลางที่คลาดเคลื่อนคือแรงต่อเนื่องของจำนวนที่เรียกว่าค่าคงที่ที่ราบเรียบ ค่าเฉลี่ยเคลื่อนที่ที่ได้รับความราบเรียบเป็นเส้นตรงโดยมีค่าคงที่การให้ราบเรียบเท่ากับ 1 ค่าเฉลี่ยเคลื่อนที่โดยเฉลี่ยตั้งแต่ 1 ถึงค่าใด ๆ คือ 1. ค่าคงที่ของ Smoothing น้อยกว่า 1 เมื่อข้อมูลล่าสุดมีน้ำหนักมากขึ้นโดยมีความลำเอียงต่อการวัดล่าสุดที่เพิ่มขึ้นเนื่องจากการปรับให้เรียบ ค่าคงที่ลดลงไปที่ศูนย์ ถ้าค่าคงที่การปรับให้เรียบมากกว่า 1 ข้อมูลที่เก่ากว่าจะมีการถ่วงน้ำหนักมากกว่าการวัดล่าสุด พล็อตนี้แสดงให้เห็นถึงปัจจัยน้ำหนักที่เกิดจากค่าต่างๆของค่าคงที่ที่ราบเรียบ โปรดทราบว่าปัจจัยน้ำหนักมีทั้งหมด 1 เมื่อค่าคงที่การปรับให้เรียบอยู่ที่ 1. เมื่อค่าคงที่การปรับให้เรียบอยู่ระหว่าง 0.5 ถึง 0.9 น้ำหนักที่ให้กับข้อมูลเก่าจะลดลงอย่างรวดเร็วเมื่อเทียบกับการวัดล่าสุดซึ่งไม่จำเป็นต้อง จำกัด ค่าเฉลี่ยเคลื่อนที่ จำนวนเฉพาะวันที่เราสามารถเฉลี่ยข้อมูลทั้งหมดที่เรามีขวากลับไปที่จุดเริ่มต้นมากและให้ปัจจัยน้ำหนักที่คำนวณได้จากการคงที่เรียบโดยอัตโนมัติทิ้งข้อมูลเก่าที่จะกลายเป็นที่ไม่เกี่ยวข้องกับแนวโน้มปัจจุบันผมพบว่าสง่างามมากขึ้น สำหรับคำถามนี้ ฟังก์ชั่นที่คุณต้องการมีอยู่แล้วโดย OpenCV ทำงานบนภาพ 3 สีหรือภาพระดับสีเทา 1 ช่อง: เมธอด convertScaleAbs จะคำนวณองค์ประกอบอาร์เรย์คำนวณค่าสัมบูรณ์และแปลงผลลัพธ์เป็นจำนวนเต็มแบบไม่ระบุชื่อ 8 บิต: dst (i) saturatecastabs (src (i) alphabeta) convertScaleAbs (InputArray src , OutputArray dst, double alpha1, double beta0) ตัวอย่างรหัสตอบกุมภาพันธ์ 8 15 ที่ 23:46 คำตอบของคุณ 2017 Stack Exchange, Inc ฉันจะเป็นบทความง่ายๆ แต่คุณจะพบว่าเป็นประโยชน์มาก เกี่ยวกับการสกัดพื้นหลังจากวิดีโอ สมมติว่าคุณได้รับภาพวิดีโอจากการเข้าชมอาจเป็นเรื่องแบบนี้ การจราจรในอินเดีย และคุณจะขอให้หาพื้นหลังโดยประมาณ หรืออะไรแบบนั้น การสกัดพื้นหลังมีความสำคัญในการติดตามวัตถุ หากคุณมีภาพพื้นหลังเปลือยอยู่แล้วจะเป็นเรื่องง่าย แต่ในหลาย ๆ กรณีคุณไม่มีภาพดังกล่าวดังนั้นคุณจะต้องสร้างภาพดังกล่าว นั่นคือที่ที่ Running Average มีประโยชน์ (ฉันคิดเกี่ยวกับเรื่องนี้เมื่อผู้ชายคนหนึ่งถามคำถามใน SOF Link) ฟังก์ชันที่เราใช้ที่นี่เพื่อหา Running Average คือ cv2.accumulateWeighted () ตัวอย่างเช่นถ้าเราดูวิดีโอเราให้ป้อนเฟรมแต่ละเฟรมให้กับฟังก์ชันนี้และฟังก์ชั่นจะค้นหาค่าเฉลี่ยของเฟรมทั้งหมดที่ป้อนให้ตามความสัมพันธ์ด้านล่างนี้ src คืออะไร แต่เป็นภาพต้นฉบับของเรา อาจเป็นภาพสีเทาหรือภาพสีและจุดลอยตัว 8 บิตหรือ 32 บิต dst คือเอาท์พุทหรือภาพสะสมด้วยแชแนลเดียวกับที่ของภาพต้นฉบับและเป็นจุดลอยตัว 32 บิตหรือ 64 บิต นอกจากนี้เราควรประกาศให้เป็นค่าแรกซึ่งจะเป็นค่าเริ่มต้น อัลฟาคือน้ำหนักของภาพอินพุท ตามเอกสารอัลฟาจะควบคุมความเร็วในการอัปเดต (ความเร็วในการสะสม 8220forgets8221 เกี่ยวกับภาพก่อนหน้านี้) กล่าวง่ายๆถ้าค่า alpha เป็นค่าที่สูงกว่าภาพโดยเฉลี่ยจะพยายามจับภาพข้อมูลที่รวดเร็วและสั้นมาก ถ้าค่าต่ำกว่าค่าเฉลี่ยจะกลายเป็นซบเซาและจะพิจารณาการเปลี่ยนแปลงอย่างรวดเร็วในภาพอินพุท ฉันจะอธิบายเล็กน้อยด้วยความช่วยเหลือของภาพในตอนท้ายของบทความ ในโค้ดด้านบนฉันได้ตั้งค่าเฉลี่ยสองค่าโดยค่าหนึ่งที่มีค่า alpha สูงขึ้นและค่า alpha ที่ต่ำกว่าเพื่อให้คุณเข้าใจผลของ alpha ได้ ตอนแรกทั้งคู่ถูกตั้งค่าเป็นเฟรมแรกของการจับภาพ และในลูปพวกเขาได้รับการปรับปรุง คุณสามารถดูผลลัพธ์บางส่วนในลิงก์ SOF ที่ฉันได้ให้ไว้แล้ว (ฉันให้ผลลัพธ์เหล่านี้ที่นี่คุณสามารถตรวจสอบโค้ดและค่าอัลฟาได้ที่นั่น): ฉันใช้เว็บแคมและบันทึกเฟรมเดิมและใช้ค่าเฉลี่ยในช่วงเวลาใดเวลาหนึ่ง นี่เป็นเฟรมจากวิดีโอการจราจรโดยทั่วไปที่ถ่ายโดยกล้องนิ่ง ดังที่คุณเห็นรถกำลังเดินทางไปและคนพยายามข้ามถนนในช่วงเวลาใดเวลาหนึ่ง แต่ดูค่าเฉลี่ยในขณะนั้น ไม่มีคนและรถในภาพนี้ (จริงๆแล้วมันอยู่ที่นั่นมีรูปลักษณ์ใกล้ชิดแล้วคุณจะเห็นมันและคนที่เป็นที่ชัดเจนมากขึ้นกว่ารถตั้งแต่รถมีการเคลื่อนไหวอย่างรวดเร็วและในภาพก็มีไม่มาก ผลกระทบต่อค่าเฉลี่ย แต่คนที่อยู่ที่นั่นเป็นเวลานานเนื่องจากเขาทำงานช้าและข้ามถนน) ตอนนี้เราจำเป็นต้องดูผลของอัลฟาบนภาพเหล่านี้การปรับภาพให้ดีขึ้นคำอธิบายด้านล่างเป็นของหนังสือ Computer Vision: Algorithms และการประยุกต์ใช้งานโดย Richard Szeliski และ LearningOpenCV Smoothing เรียกอีกอย่างว่า blurring คือการประมวลผลภาพที่ง่ายและใช้บ่อย มีหลายเหตุผลที่ทำให้เรียบ ในบทแนะนำนี้เราจะเน้นการทำให้เรียบเพื่อลดเสียงรบกวน (การใช้งานอื่น ๆ จะปรากฏในบทแนะนำต่อไปนี้) เพื่อให้การดำเนินงานราบเรียบเราจะใช้ตัวกรองกับภาพของเรา ตัวกรองชนิดที่พบมากที่สุดคือเส้นตรง ซึ่งค่า pixel8217s ของผลงานออก (คือ) จะถูกกำหนดเป็นจำนวนรวมของค่าพิกเซลอินพุท (กล่าวคือ): ช่วยให้เห็นภาพตัวกรองเป็นหน้าต่างของค่าสัมประสิทธิ์เลื่อนผ่านภาพ มีหลายประเภทของตัวกรองที่นี่เราจะกล่าวถึงการใช้มากที่สุด: ตัวกรองกล่อง Normalized ตัวกรองนี้เป็นที่ง่ายที่สุดของพิกเซลผลลัพธ์ทั้งหมดเป็นค่าเฉลี่ยของเพื่อนบ้านของเคอร์เนล (ทั้งหมดของพวกเขามีส่วนร่วมกับน้ำหนักที่เท่ากัน) เคอร์เนลอยู่ด้านล่าง: Gaussian ตัวกรองน่าจะเป็นตัวกรองที่มีประโยชน์มากที่สุด (แม้ว่าจะไม่เร็วที่สุด) กรอง Gaussian จะกระทำโดย convolving แต่ละจุดในอาร์เรย์ใส่กับ kernel Gaussian แล้วสรุปพวกเขาทั้งหมดเพื่อผลิตอาร์เรย์ผลลัพธ์ เพียงเพื่อให้ภาพที่ชัดเจนโปรดจำไว้ว่าเคอร์เนลแบบ Gaussian 1D มีลักษณะเป็นสมมติว่าภาพเป็น 1D คุณสามารถสังเกตได้ว่าพิกเซลที่อยู่ตรงกลางจะมีน้ำหนักมากที่สุด น้ำหนักของเพื่อนบ้านลดลงเมื่อระยะห่างเชิงพื้นที่ระหว่างพวกเขากับพิกเซลศูนย์กลางเพิ่มขึ้น โปรดจำไว้ว่า 2D Gaussian สามารถแสดงได้ดังนี้: Median Filter ตัวกรองมัธยฐานจะทำงานผ่านแต่ละองค์ประกอบของสัญญาณ (ในกรณีนี้คือภาพ) และแทนที่แต่ละพิกเซลด้วยค่ามัธยฐานของพิกเซลที่ตั้งอยู่ใกล้เคียง (ตั้งอยู่ในพื้นที่สี่เหลี่ยมจัตุรัสรอบ ๆ พิกเซลที่ได้รับการประเมิน ) ตัวกรองแบบทวิภาคีในปัจจุบันเราได้อธิบายตัวกรองบางตัวซึ่งเป้าหมายหลักคือทำให้ภาพอินพุตได้ราบรื่น แต่บางครั้งตัวกรองจะไม่เพียง แต่ละลายเสียง แต่ยังเรียบขอบ เพื่อหลีกเลี่ยงสิ่งนี้ (ในบางช่วงอย่างน้อยที่สุด) เราสามารถใช้ตัวกรองทวิภาคีได้ ในทำนองเดียวกันเป็นตัวกรองแบบเกาส์ตัวกรองทวิภาคียังพิจารณาพิกเซลใกล้เคียงกับน้ำหนักที่กำหนดให้แต่ละของพวกเขา น้ำหนักเหล่านี้มีสองส่วนซึ่งเป็นน้ำหนักแรกที่ใช้ตัวกรอง Gaussian ส่วนประกอบที่สองจะพิจารณาความแตกต่างของความเข้มระหว่างพิกเซลที่อยู่ใกล้เคียงกับพิกัดที่ได้รับการประเมิน สำหรับคำอธิบายรายละเอียดเพิ่มเติมคุณสามารถตรวจสอบลิงก์นี้ได้โปรแกรมนี้ทำอะไรโหลดภาพใช้ตัวกรองชนิดต่างๆ 4 แบบ (อธิบายในทฤษฎี) และแสดงภาพที่ผ่านการกรองตามลำดับ Explanation Let8217s ตรวจสอบฟังก์ชัน OpenCV ที่เกี่ยวข้องกับขั้นตอนการทำให้ราบรื่นเท่านั้นเนื่องจาก ส่วนที่เหลือเป็นที่รู้จักอยู่แล้วโดยขณะนี้ ตัวกรองบล็อกมาตรฐาน: OpenCV มีการเบลอฟังก์ชั่นเพื่อให้การปรับให้เรียบกับตัวกรองนี้ เราระบุอาร์กิวเมนต์ 4 ตัว (รายละเอียดเพิ่มเติมโปรดดูที่การอ้างอิง): src ภาพต้นฉบับ dst ภาพปลายทางขนาด (w, h) กำหนดขนาดของเคอร์เนลที่จะใช้ (ความกว้าง w พิกเซลและความสูงพิกเซล) จุด (-1, -1) ระบุว่าจุดยึด (พิกเซลที่ประเมิน) อยู่ที่ใดในบริเวณใกล้เคียง ถ้ามีค่าเป็นลบศูนย์กลางของเคอร์เนลจะถือว่าเป็นจุดยึด ดำเนินการโดยฟังก์ชัน GaussianBlur: ในที่นี้เราใช้อาร์กิวเมนต์ 4 รายการ (รายละเอียดเพิ่มเติมตรวจสอบข้อมูลอ้างอิง OpenCV):

Comments

Popular posts from this blog

Traderxp ไบนารี ตัวเลือก

Netdania แลกเปลี่ยน & หุ้น