อธิบายการแบ่งส่วนภาพโดยใช้ค่าเฉลี่ยกะ


107

ใครก็ได้โปรดช่วยฉันทำความเข้าใจว่าการแบ่งส่วนของค่าเฉลี่ยกะทำงานอย่างไร

นี่คือเมทริกซ์ 8x8 ที่ฉันเพิ่งสร้างขึ้นมา

  103  103  103  103  103  103  106  104   
  103  147  147  153  147  156  153  104   
  107  153  153  153  153  153  153  107   
  103  153  147  96   98   153  153  104   
  107  156  153  97   96   147  153  107   
  103  153  153  147  156  153  153  101   
  103  156  153  147  147  153  153  104   
  103  103  107  104  103  106  103  107

การใช้เมทริกซ์ด้านบนเป็นไปได้ที่จะอธิบายว่าการแบ่งส่วนของค่าเฉลี่ยกะจะแยกตัวเลข 3 ระดับที่แตกต่างกันอย่างไร


สามระดับ? ฉันเห็นตัวเลขประมาณ 100 และรอบ 150
ยอห์

2
เช่นเดียวกับการแบ่งส่วนของมันฉันคิดว่าตัวเลขที่อยู่ตรงกลางจะต้องห่างจากตัวเลขขอบที่จะรวมอยู่ในส่วนของขอบเขตนั้น นั่นคือเหตุผลที่ฉันพูดว่า 3 ฉันอาจจะผิดเพราะฉันไม่เข้าใจจริงๆว่าการแบ่งประเภทนี้ทำงานอย่างไร
Sharpie

โอ้ ... บางทีเราอาจจะใช้เลเวลเพื่อหมายถึงสิ่งต่างๆ ทั้งหมดดี. :)
ยอห์

1
ฉันชอบคำตอบที่ได้รับการยอมรับ แต่ฉันไม่คิดว่ามันจะแสดงภาพรวมทั้งหมด IMO pdf นี้อธิบายการแบ่งส่วนของค่าเฉลี่ยกะได้ดีกว่า (การใช้พื้นที่มิติที่สูงกว่าเป็นตัวอย่างดีกว่า 2d ที่ฉันคิด) eecs.umich.edu/vision/teaching/EECS442_2012/lectures/…
Helin Wang

คำตอบ:


204

พื้นฐานก่อน:

การแบ่งส่วน Mean Shift เป็นเทคนิคการทำให้เป็นเนื้อเดียวกันเฉพาะที่ซึ่งมีประโยชน์มากสำหรับการลดทอนการแรเงาหรือความแตกต่างของโทนสีในวัตถุที่แปลเป็นภาษาท้องถิ่น ตัวอย่างดีกว่าหลาย ๆ คำ:

ใส่คำอธิบายภาพที่นี่

การดำเนินการ: แทนที่แต่ละพิกเซลด้วยค่าเฉลี่ยของพิกเซลในย่าน range-r และมีค่าอยู่ภายในระยะทาง d

ค่าเฉลี่ยกะมักจะใช้ 3 อินพุต:

  1. ฟังก์ชันระยะทางสำหรับการวัดระยะทางระหว่างพิกเซล โดยปกติจะเป็นระยะทางแบบยุคลิด แต่สามารถใช้ฟังก์ชันระยะทางอื่น ๆ ที่กำหนดไว้อย่างดีได้ แมนฮัตตันระยะทางเป็นอีกหนึ่งทางเลือกที่มีประโยชน์บางครั้ง
  2. รัศมี พิกเซลทั้งหมดที่อยู่ในรัศมีนี้ (วัดตามระยะทางด้านบน) จะถูกนำมาคำนวณ
  3. ความแตกต่างของมูลค่า จากพิกเซลทั้งหมดภายในรัศมี r เราจะใช้เฉพาะพิกเซลที่มีค่าอยู่ในความแตกต่างนี้ในการคำนวณค่าเฉลี่ย

โปรดทราบว่าอัลกอริทึมไม่ได้กำหนดไว้อย่างชัดเจนที่เส้นขอบดังนั้นการใช้งานที่แตกต่างกันจะให้ผลลัพธ์ที่แตกต่างกัน

ฉันจะไม่ได้หารือเกี่ยวกับรายละเอียดทางคณิตศาสตร์ที่เต็มไปด้วยเลือดที่นี่ที่พวกเขาเป็นไปไม่ได้ที่จะแสดงได้โดยไม่ต้องสัญกรณ์คณิตศาสตร์ที่เหมาะสมไม่สามารถใช้ได้ใน StackOverflow และยังเพราะพวกเขาสามารถพบได้จากแหล่งที่ดีอื่น ๆ

ลองดูที่ศูนย์กลางของเมทริกซ์ของคุณ:

153  153  153  153 
147  96   98   153 
153  97   96   147   
153  153  147  156  

ด้วยตัวเลือกที่เหมาะสมสำหรับรัศมีและระยะทางพิกเซลกลางทั้งสี่จะได้รับค่า 97 (ค่าเฉลี่ย) และจะแตกต่างจากพิกเซลที่อยู่ติดกัน

ลองคำนวณในMathematica แทนที่จะแสดงตัวเลขจริงเราจะแสดงรหัสสีเพื่อให้เข้าใจสิ่งที่เกิดขึ้นได้ง่ายขึ้น:

การเข้ารหัสสีสำหรับเมทริกซ์ของคุณคือ:

ใส่คำอธิบายภาพที่นี่

จากนั้นเราทำการกะค่าเฉลี่ยที่สมเหตุสมผล:

MeanShiftFilter[a, 3, 3]

และเราได้รับ:

ใส่คำอธิบายภาพที่นี่

โดยที่องค์ประกอบตรงกลางทั้งหมดมีค่าเท่ากัน (ถึง 97, BTW)

คุณอาจทำซ้ำหลาย ๆ ครั้งด้วย Mean Shift โดยพยายามให้สีเป็นเนื้อเดียวกันมากขึ้น หลังจากทำซ้ำสองสามครั้งคุณจะมาถึงการกำหนดค่าที่ไม่เสถียรของ isotropic:

ใส่คำอธิบายภาพที่นี่

ในตอนนี้ควรระบุให้ชัดเจนว่าคุณไม่สามารถเลือกจำนวน "สี" ได้หลังจากใช้ Mean Shift แล้ว มาดูวิธีทำกันดีกว่าเพราะนั่นคือส่วนที่สองของคำถามของคุณ

สิ่งที่คุณจะต้องมีความสามารถที่จะกำหนดจำนวนของกลุ่มส่งออกล่วงหน้าเป็นสิ่งที่ต้องการKmeans การจัดกลุ่ม

มันทำงานในลักษณะนี้สำหรับเมทริกซ์ของคุณ:

b = ClusteringComponents[a, 3]

{{1, 1, 1, 1, 1, 1, 1, 1}, 
 {1, 2, 2, 3, 2, 3, 3, 1}, 
 {1, 3, 3, 3, 3, 3, 3, 1}, 
 {1, 3, 2, 1, 1, 3, 3, 1}, 
 {1, 3, 3, 1, 1, 2, 3, 1}, 
 {1, 3, 3, 2, 3, 3, 3, 1}, 
 {1, 3, 3, 2, 2, 3, 3, 1}, 
 {1, 1, 1, 1, 1, 1, 1, 1}}  

หรือ:

ใส่คำอธิบายภาพที่นี่

ซึ่งคล้ายกับผลลัพธ์ก่อนหน้านี้มาก แต่อย่างที่คุณเห็นตอนนี้เรามีเอาต์พุตเพียงสามระดับเท่านั้น

เฮ้!


มีการใช้ Matlab ของ Mean shift สำหรับรูปภาพหรือไม่
Kaushik Acharya


164

การแบ่งส่วน Mean-Shift ทำงานดังนี้:

ข้อมูลรูปภาพจะถูกแปลงเป็นพื้นที่คุณลักษณะ พื้นที่คุณลักษณะ

ในกรณีของคุณสิ่งที่คุณมีคือค่าความเข้มดังนั้นพื้นที่คุณลักษณะจะเป็นเพียงมิติเดียว (ตัวอย่างเช่นคุณอาจคำนวณคุณสมบัติพื้นผิวบางอย่างแล้วพื้นที่ฟีเจอร์ของคุณจะเป็นสองมิติ - และคุณจะแบ่งกลุ่มตามความเข้มและพื้นผิว)

หน้าต่างการค้นหาจะกระจายไปทั่วพื้นที่คุณลักษณะ ใส่คำอธิบายภาพที่นี่

จำนวนหน้าต่างขนาดหน้าต่างและตำแหน่งเริ่มต้นเป็นสิ่งที่กำหนดเองสำหรับตัวอย่างนี้ - สิ่งที่สามารถปรับแต่งได้ขึ้นอยู่กับแอปพลิเคชันเฉพาะ

การทำซ้ำ Mean-Shift:

1. ) มีการคำนวณความหมายของตัวอย่างข้อมูลภายในแต่ละหน้าต่าง ใส่คำอธิบายภาพที่นี่

2. ) หน้าต่างจะถูก SHIFTed ไปยังตำแหน่งที่เท่ากับค่าที่คำนวณไว้ก่อนหน้านี้ ใส่คำอธิบายภาพที่นี่

ขั้นตอนที่ 1. ) และ 2. ) จะทำซ้ำจนกว่าจะบรรจบกันกล่าวคือหน้าต่างทั้งหมดจะตกลงบนตำแหน่งสุดท้าย ใส่คำอธิบายภาพที่นี่

หน้าต่างที่อยู่ในตำแหน่งเดียวกันจะรวมเข้าด้วยกัน ใส่คำอธิบายภาพที่นี่

ข้อมูลถูกจัดกลุ่มตามการข้ามผ่านหน้าต่าง ใส่คำอธิบายภาพที่นี่

... เช่นข้อมูลทั้งหมดที่ถูกส่งผ่านโดยหน้าต่างที่ลงเอยที่ตำแหน่ง“ 2” จะรวมกันเป็นกลุ่มที่เกี่ยวข้องกับตำแหน่งนั้น

ดังนั้นการแบ่งกลุ่มนี้ (โดยบังเอิญ) จะสร้างกลุ่มสามกลุ่ม การดูกลุ่มเหล่านั้นในรูปแบบภาพต้นฉบับอาจดูเหมือนภาพสุดท้ายในคำตอบของเบลิซาเรียส การเลือกขนาดหน้าต่างและตำแหน่งเริ่มต้นที่แตกต่างกันอาจให้ผลลัพธ์ที่แตกต่างกัน


ไม่สามารถกำหนดพื้นที่เป็นสามมิติโดยบันทึกตำแหน่งของแต่ละพิกเซลได้หรือไม่
Helin Wang

@HelinWang ใช่มันทำได้
mlai

ฉันเข้าใจวิธีการวางตำแหน่งของหน้าต่างในพื้นที่คุณลักษณะ 1D แต่ฉันไม่เห็นว่าคำอธิบายของคุณสามารถนำไปใช้กับอัลกอริทึมการเปลี่ยนค่าเฉลี่ยที่รวมระยะการค้นหาเชิงพื้นที่ (เช่นพิกเซล) และระยะทางสเปกตรัม (ความแตกต่างของค่า) ได้อย่างไร เช่นเดียวกับคำตอบของดร. เบลิซาเรียส คุณช่วยชี้แจงเรื่องนี้ได้ไหม
Lennert

@ เลนเนิร์ตถ้าฉันเข้าใจคำถามของคุณอย่างถูกต้องสิ่งที่คุณต้องทำคือเพิ่มตำแหน่งพิกเซล (x, y) เป็นคุณสมบัติหรือเพิ่มคุณสมบัติตามตำแหน่งอื่น ๆ ลงในพื้นที่คลัสเตอร์ ดูเหมือนว่าคำตอบของ Belisarius จะอ้างอิงถึงการนำไปใช้งานเฉพาะใน Mathematica ซึ่งอาจทำให้ซับซ้อนขึ้นเล็กน้อย ที่ช่วย?
mlai

1
@ เลนเนิร์ตใช่ฉันคิดว่าคุณเข้าใจแล้ว ฉันเข้าใจว่าทำไมคุณถึงพบว่าคำตอบของฉันสับสน ฉันค่อนข้างวาด 'หน้าต่าง' ของฉันเป็นสองมิติ แต่จริงๆแล้วฉันพยายามที่จะพรรณนาการรวมกลุ่มกับค่าสเปกตรัมมิติเดียวเท่านั้น มันค่อนข้างดีที่จะเห็นภาพค่าเฉลี่ยกะคลัสเตอร์ในพื้นที่ฟีเจอร์สามมิติด้วยรูปวาดหรือแอนิเมชั่น (อาจจะเป็นหนึ่งในวันนี้ถ้าฉันมีเวลา)
mlai
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.