Algebra ເລັກໆນ້ອຍໆ / Linear Algebra ຢູ່ຫລັງ Instagram Face 3D Filters

ມັນແມ່ນຄວາມເຊື່ອທີ່ ໜັກ ແໜ້ນ ຂອງຂ້ອຍວ່າພວກເຮົາທຸກຄົນເຄີຍໃຊ້ຕົວກອງ Snapchat / Instagram ຫຼືຢ່າງ ໜ້ອຍ ກໍ່ຈະເຫັນ ໝູ່ ເພື່ອນຂອງພວກເຮົາໃຊ້ມັນແລະແບ່ງປັນມັນໃນເລື່ອງຫລືສື່ທາງສັງຄົມຂອງພວກເຂົາ.

ພວກເຮົາເລີ່ມຕົ້ນທີ່ຈະຮູ້ ຄຳ ວ່າ“ ຕົວກອງ” ທີ່ເປັນເຄື່ອງປະດັບຫລືເພີ່ມພື້ນຫລັງ, ຫຼັງຈາກນັ້ນມັນໄດ້ຮັບຄວາມນິຍົມຫຼາຍຂື້ນເມື່ອມັນປະກົດຢູ່ໃນແຕ່ລະໃບ ໜ້າ ໃນກ້ອງຖ່າຍຮູບເຊັ່ນ: ໃສ່ແວ່ນຕາກັນແດດ, ຜ້າຫົວ, ການປ່ຽນອາຍຸ, ແລະອື່ນໆ. ໜ້າ ຂອງຕົວເອງ

ໂດຍສະເພາະໃນໂພສນີ້, ພວກເຮົາຈະປຶກສາຫາລືກ່ຽວກັບສິ່ງທີ່ໂທລະສັບ / Instagram ຂອງພວກເຮົາ 'ຈະເຮັດ' ເມື່ອພວກເຮົາເຮັດ ໜ້າ ທີ່ກັ່ນຕອງໃບ ໜ້າ ເພື່ອໃຫ້ແວ່ນຕາຖືກວາງໄວ້ໃນບ່ອນທີ່ ເໝາະ ສົມແລະສາມາດຕິດຕາມຫົວຂອງພວກເຮົາໄດ້.

ໃນລະອຽດ, ຂະບວນການຕົ້ນຕໍຂອງການກັ່ນຕອງ 3D ໃບ ໜ້າ ແບ່ງອອກເປັນ 3 ໄລຍະຕາມ ລຳ ດັບ:

  1. ການຊອກຄົ້ນຫາໃບ ໜ້າ
  2. ການຊອກຄົ້ນຫາຈຸດເດັ່ນຂອງໃບ ໜ້າ
  3. ການຄາດຄະເນລາຍການ

ການຊອກຄົ້ນຫາໃບ ໜ້າ ແລະການຄົ້ນພົບຈຸດພິເສດແມ່ນສ່ວນ ໜຶ່ງ ຂອງການຮຽນຮູ້ເຄື່ອງຈັກ / ການຮຽນຮູ້ເລິກເຊິ່ງເຮັດການກວດພົບວັດຖຸຈາກຮູບພາບທັງ ໝົດ ແລະເຮັດການຕາມປົກກະຕິຕາມ ລຳ ດັບ. ສຳ ລັບແຕ່ລະໃບ ໜ້າ ທີ່ກວດພົບ, ມັນຈະຖືກສົ່ງໄປຫາຂັ້ນຕອນການຄິດໄລ່ໄລຍະທີສອງເພື່ອປະເມີນບ່ອນທີ່ດັງ, ຕາ, ປາກແລະອື່ນໆຈົນເຖິງປະຈຸບັນນີ້, ມີຫຼາຍສູດການຄິດໄລ່ແລະຖານຂໍ້ມູນທີ່ກວມເອົາໃບ ໜ້າ 68 ໃບ. ນີ້ແມ່ນແຫຼ່ງທີ່ດີ ສຳ ລັບການອ່ານຕໍ່ໄປ.

Landmark Landial ໂດຍ pyimagesearch.com

ເຖິງຢ່າງໃດກໍ່ຕາມ, ພວກເຮົາຈະສຸມໃສ່ໄລຍະທີສາມ (ການຄາດຄະເນລາຍການ) ເນື່ອງຈາກພວກເຮົາ ກຳ ລັງເວົ້າກ່ຽວກັບການປ່ຽນຄະນິດຄິດໄລ່ທາງຄະນິດສາດ / ເສັ້ນຊື່ໃນເສັ້ນ. ແນ່ນອນ, ສອງໄລຍະ ທຳ ອິດມີຫຼາຍຄະນິດສາດທີ່ຈະຖືກປົກຄຸມແຕ່ວ່າແຕ່ລະອັນມີແຜ່ນໃຫຍ່ ສຳ ລັບພວກເຂົາທີ່ຈະຖືກສົນທະນາ.

ການຄາດຄະເນລາຍການ

ຜົນຂອງການຊອກຄົ້ນຫາຈຸດ ສຳ ຄັນແມ່ນການ ກຳ ນົດຈຸດປະສານງານຂອງ x ແລະ y ຕໍ່ຈຸດ ສຳ ຄັນ, ເຊິ່ງເປັນພຽງຂໍ້ມູນ 2D ເທົ່ານັ້ນໃນຂະນະດຽວກັນພວກເຮົາຕ້ອງຮູ້ z-coordinates ວ່າຕາເບື້ອງຊ້າຍແມ່ນໄກກວ່າຕາເບື້ອງຂວາຈາກກ້ອງສະນັ້ນພວກເຮົາສາມາດເວົ້າວ່າໃບ ໜ້າ ແມ່ນ ເບິ່ງດ້ານຊ້າຍເພາະວ່າແວ່ນຕາຈະຕິດຕາມທາງທີ່ພວກເຮົາ ກຳ ລັງເບິ່ງ.

ບັນຫາ / ວິທີການທີ່ພວກເຮົາ ກຳ ລັງໃຊ້ເພື່ອເຮັດການຄາດຄະເນດັ່ງກ່າວແມ່ນເອີ້ນວ່າ“ ມູມມອງ -n-Point (PnP)” ຫລື“ ຕົວແບບກ້ອງ Pinhole”. ມັນແມ່ນວິທີການຫຼາຍທົດສະວັດທີ່ຜ່ານມາແຕ່ຍັງຖືກ ນຳ ໃຊ້ເລື້ອຍໆໃນຫຼາຍໆກໍລະນີວິໄສທັດຄອມພິວເຕີລວມທັງຫຸ່ນຍົນ, ຄວາມເປັນຈິງທີ່ເພີ່ມຂື້ນແລະການສົນທະນາຂອງພວກເຮົາ. ເພື່ອເຮັດໃຫ້ວິທີການນີ້ເຮັດວຽກ, ມັນຕ້ອງມີ 3 ອົງປະກອບ:

1. ຈຸດ 3D ຂອງໂລກປະສານງານພື້ນທີ່ເປັນເອກະສານອ້າງອີງ

ຄຳ ສັບທີ່ວ່າ“ ໂລກປະສານງານໂລກ” ແມ່ນສິ່ງທີ່ແກ້ໄຂບາງຢ່າງທີ່ພວກເຮົາສາມາດເວົ້າໄດ້ວ່າເປັນຈຸດອ້າງອີງຫລືໃນສະພາບປົກກະຕິທີ່ໂລກຮູ້ວ່າມັນເປັນຄວາມຈິງ. !!! ໃນກໍລະນີນີ້, ພວກເຮົາ ກຳ ລັງ ນຳ ໃຊ້ 14 ຈຸດນີ້.

ຕຳ ແໜ່ງ ຈຸດເຫຼົ່ານີ້ແມ່ນຄ້າຍຄືກັບຈຸດປະສົງຂອງໃບ ໜ້າ ຂອງມະນຸດໂດຍມີດັງຢູ່ທາງ ໜ້າ ແລະກາງຂອງໃບ ໜ້າ, ຄາງຢູ່ທາງລຸ່ມແລະອື່ນໆ.

2. 2D ຈຸດຂອງການຄາດຄະເນ, ການຕິດຕໍ່ພົວພັນ ໜຶ່ງ ຫາ ໜຶ່ງ ຊ່ອງກັບຊ່ອງປະສານງານຂອງໂລກ

ຈຸດຄາດຄະເນແມ່ນມາຈາກຮູບແບບການຮຽນຮູ້ທີ່ເລິກເຊິ່ງໃນໄລຍະສອງ, ເຊິ່ງແມ່ນຮູບແບບຂອງໃບ ໜ້າ ແລະພວກເຮົາໃຊ້ພຽງ 14 ຈຸດຈາກຜົນໄດ້ຮັບ 68 ຈຸດຈາກຕົວແບບ.

3. ກ້ອງວົງຈອນປິດ

ມາຕຣິກເບື້ອງມີຂໍ້ມູນກ່ຽວກັບຄວາມຍາວຂອງຈຸດປະສານງານຂອງກ້ອງຖ່າຍຮູບແລະຈຸດຕົ້ນຕໍທີ່ປ່ຽນແທນໄດ້ໂດຍການປະສານງານຂອງສູນກາງຂອງຮູບ. ໃນຂະນະທີ່ຄວາມຍາວປະສານງານມັກຈະເທົ່າກັນກັບຄວາມກວ້າງຂອງພາບທັງ ໝົດ.

ມຸມມອງ-n-Point (PnP) / Pinhole Camera Model

ໂດຍການ ນຳ ໃຊ້ຂໍ້ມູນ 3 ຂໍ້ຂ້າງເທິງນີ້, ພວກເຮົາຢາກໄດ້ຕາຕະລາງການ ໝູນ ວຽນ (R) ແລະ vector ແປ (t) ຈາກສູດນີ້.

ແຫຼ່ງຂໍ້ມູນ: ເອກະສານ OpenCV

ມັນແມ່ນການຈັບຄູ່ຈຸດ 14 ຈຸດຂອງໂລກປະສານງານກັບ 14 ຈຸດຂອງໃບ ໜ້າ ທີ່ກວດພົບຕົວຈິງເພື່ອໃຫ້ໄດ້ໃບ ໜ້າ ໝູນ ວຽນແລະແປເປັນແຕ່ລະມິຕິ.

ການຄາດຄະເນຈຸດ ໃໝ່

ແຫຼ່ງຂໍ້ມູນ: ເອກະສານ OpenCV

ຫຼັງຈາກຮູ້ເຖິງຕາຕະລາງການຫມູນວຽນແລະ vector ແປພາສາ, ພວກເຮົາຢາກສະ ເໜີ ຈຸດ ໃໝ່ (ອາດຈະແມ່ນອີກ 14 ຈຸດເຂົ້າ). ວັດສະດຸປ້ອນແມ່ນ 3d coordinate (X, Y, Z) ຄ້າຍຄືກັບຈຸດປະສານງານຂອງໂລກເພື່ອເປັນຈຸດປະສານງານ 2D (u, v) ເຊິ່ງໃນຕອນທ້າຍພວກເຮົາພຽງແຕ່ສະແດງຮູບພາບໃນ 2D.

ທີ່ມາ: ແວ່ນຕາກັນແດດແລະແວ່ນຕາ

ຕົວຢ່າງ: ຖ້າທ່ານຕ້ອງການໂຄງການຈຸດ ໃໝ່ ຂອງເລນໄປຫາ 2D, ເລືອກເອົາການປ້ອນຂໍ້ມູນ 3D ໃນທົ່ວໂລກປະສານງານກັບຕາບວກກັບປະລິມານ Z ປະລິມານ ໜ້ອຍ, ເພາະວ່າເລນແມ່ນໃກ້ຄຽງກັບສາຍຕາທີ່ກ່ຽວຂ້ອງກັບກ້ອງ. ເຊັ່ນດຽວກັນ, ແຜ່ນຮອງດັງ, ເລືອກສະຖານທີ່ທົ່ວໂລກປະສານງານຂອງດັງ.

ເພື່ອປະຕິບັດການກັ່ນຕອງ, ທ່ານ ຈຳ ເປັນຕ້ອງ ກຳ ນົດບາງຈຸດ 3D ຂອງວັດຖຸຂອງທ່ານເຊັ່ນ: ແວ່ນ, ໝວກ ຫລືໃບຫູ, ເຄົາລົບ 14 ຈຸດຂອງພື້ນທີ່ປະສານງານຂອງໂລກຫຼັງຈາກນັ້ນການຄາດຄະເນປ່ຽນຈຸດ 3D ເຫຼົ່ານັ້ນອອກເປັນ 2D ຈຸດທີ່ພິຈາລະນາວ່າຫົວ ໜ້າ ສ້າງ.

ເພື່ອສະຫຼຸບ, ຂະບວນການທີ່ຈະສະແດງຕົວກອງແມ່ນ: ຄົ້ນພົບໃບ ໜ້າ -> ການຄາດຄະເນໃບ ໜ້າ 2D ທີ່ຄາດຄະເນ -> ຮັບຕາຕະລາງການ ໝູນ ວຽນແລະ vector ແປພາສາ -> ລາຍການ 3D ຂອງໂຄງການຊີ້ໃຫ້ເຫັນ 2D -> ເບິ່ງເຫັນພາບ. ມັນຈະເກີດຂື້ນໃນທຸກໆຂອບທີ່ກ້ອງຖ່າຍຮູບຖືກຈັບ.

ລະຫັດໃນ python / C ++ ເພື່ອເຮັດໃຫ້ມັນເກີດຂື້ນ

ຖ້າທ່ານຕ້ອງການ ນຳ ໃຊ້ແນວຄວາມຄິດນີ້, ກະລຸນາເບິ່ງເອກະສານ OpenCV ກ່ຽວກັບການສົນທະນານີ້.

ໜ້າ ທີ່ທີ່ຈະໄດ້ຮັບຕາຕະລາງການຫມູນວຽນແລະການແປພາສາ vector: C ++: projectPoints Python: cv2.projectPoints

ໜ້າ ທີ່ໃນການເຮັດລາຍການ 3D ຊີ້ໄປທີ່ 2D: C ++: projectPoints Python: cv2.projectPoints

ທັງສອງຢູ່ພາຍໃນຊຸດ OpenCV !!

ປະຕິເສດ

ຂ້ອຍບໍ່ແມ່ນນັກວິສະວະກອນຂອງ Snapchat / Instagram, ຂ້ອຍບໍ່ໄດ້ເວົ້າວ່າພວກເຂົາໃຊ້ແນວຄວາມຄິດນີ້ທີ່ຂ້ອຍບໍ່ຮູ້ວ່າພວກເຂົາເຮັດຫຍັງຢູ່ພາຍໃນ, ຂ້ອຍເຫັນວ່າພວກເຂົາເຮັດໄດ້ຊັບຊ້ອນກວ່າສິ່ງທີ່ເຈົ້າໄດ້ອ່ານໃນບົດຄວາມນີ້. ຂໍ້ຄວາມຕົ້ນຕໍທີ່ຂ້າພະເຈົ້າຢາກມອບໃຫ້ທ່ານແມ່ນ, ທ່ານສາມາດ ນຳ ໃຊ້ແນວຄິດເພື່ອເຮັດສິ່ງນີ້!

ຂໍຂອບໃຈ ສຳ ລັບການອ່ານ !!! ຊື່ນບານ

ເບິ່ງຕື່ມອີກ

ເຈົ້າສາມາດຂາຍໃນ Instagram ໄດ້ໂດຍໃຊ້ບັນຊີ Shopify Lite ບໍ?ມັນສາມາດລຶບຮູບ ໜຶ່ງ ໃບຈາກຫລາຍຮູບໃນ Instagram ໄດ້ບໍ? ຖ້າເປັນດັ່ງນັ້ນ, ມັນຈະມີຜົນກະທົບແນວໃດຕໍ່ການໄປສະນີ?ສອງບັນຊີ Instagram ຂອງທຸລະກິດສາມາດເຊື່ອມໂຍງກັບ ໜ້າ ເຟສບຸກດຽວກັນໄດ້ບໍ?ຄຳ ຕິຊົມຂອງທ່ານກ່ຽວກັບການໂຄສະນາ TikTok ຫລືການໂຄສະນາເຜີຍແຜ່ໃນ TikTok ແມ່ນຫຍັງ?ຂ້ອຍຈະໄດ້ຮັບໃບຢັ້ງຢືນການຢັ້ງຢືນໃນ Instagram ມີຜູ້ຕິດຕາມ 175k ແນວໃດ?ເປັນຫຍັງ Facebook ຈຶ່ງມີສອງໂປແກມສົ່ງຂໍ້ຄວາມ (Messenger ແລະ WhatsApp)? ເຊັ່ນດຽວກັນຖ້າພວກເຂົາມີ Messenger ແລ້ວແມ່ນຫຍັງທີ່ຕ້ອງການໃຫ້ພວກເຂົາຊື້ WhatsApp?ການຂະຫຍາຍຕົວຂອງຜູ້ໃຊ້ຂອງ Snapchat ແມ່ນຊ້າລົງຕັ້ງແຕ່ Instagram ເປີດເລື່ອງຕ່າງໆເປັນເລື່ອງໃຫຍ່ບໍ?ຊາວອິນເດຍທັງ ໝົດ ກຳ ລັງໃຫ້ຄະແນນ ໜຶ່ງ ຂອງ Snapchat ໃນ Google Play Store. ມັນຈະມີຜົນສະທ້ອນແນວໃດ?