[iOS Dev] UIKit and Core Image Coordinates System

นั่งดู Get Started with Core Image ซึ่งเป็น Session หนึ่งของ WWDC 2012 ครับ
ร้อนวิชา อยากทำ Face Detection เลยลองเล่นดู พบความปวดหัวเรื่องหนึ่งนั่นคือ Coordinates
ซึ่ง Coordinates หรือจุดอ้างอิงต่างๆ บน View นั้น (Blog นี้จะกล่าวถึงจุด origin)
Coordinates ของ UIKit และ Core Image นั้นแตกต่างกันนะครับ

UIKit's Coordinates System
ก็เป็นแบบที่เราคุ้ยเคยกันดี ว่าจุด origin นั้น
จะอยู่มุมซ้ายบนหรือเรียกอย่างเป็นทางการว่า "Upper Left Origin Coordinates System"

Core Image Coordinates System
ส่วน Core Image จะต่างออกไป โดยรูปที่เรานำมา Process
จะมี Coordinates space เป็นของตัวเอง และจุด origin ของรูปจะอยู่ที่มุมซ้ายล่าง
"Lower Left Origin Coordinates System" ซึ่งจะใช้ใน Core Graphics ด้วยเช่นกัน
ดังนั้นเวลาเราได้จุดจากการทำ Detection บน Core Image
เราก็ยังไม่สามารถนำมาวาดบน UIKit Element (UIImageView, UIView) ได้ทันที
จะต้องแปลงก่อน โดยจะต้องใช้ Matrix การแปลงตามนี้
** (ใครเคยเรียน Image Processing มาจะดู Matrix พวกนี้ออกได้ไม่ยากเย็นนัก :)

ui = UIKit, ci = Core Image, h = height of image
โดยในการแปลงนั้นก็ไม่ได้ยากอย่างที่คิด เนื่องจาก iOS SDK จัดของพวกนี้มาให้หมดแล้ว นั่นคือ CGAffineTransform ที่เราคุ้นเคยกันดีนั่นเอง โดยแปลงได้ทั้ง Rect ทั้ง Point เลยทีเดียว

ลองนำไปใช้กันนะครับ :) เจอกัน Entry หน้า Facial Recognition

Popular posts from this blog

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น