ฉันสงสัยว่าภาษาใดดีที่สุดสำหรับการประมวลผลภาพ ฉันรู้ว่า MATLAB มีห้องสมุดและชุมชนผู้ใช้ที่ดี ฉันไม่ได้ตรวจสอบมันมีสำหรับหลามเช่นกัน
ภาษาที่มีประสิทธิภาพที่สุดสำหรับสิ่งนี้คืออะไร?
ฉันสงสัยว่าภาษาใดดีที่สุดสำหรับการประมวลผลภาพ ฉันรู้ว่า MATLAB มีห้องสมุดและชุมชนผู้ใช้ที่ดี ฉันไม่ได้ตรวจสอบมันมีสำหรับหลามเช่นกัน
ภาษาที่มีประสิทธิภาพที่สุดสำหรับสิ่งนี้คืออะไร?
คำตอบ:
มันไม่เพียง แต่เกี่ยวกับภาษาการเขียนโปรแกรม แต่ไลบรารีที่คุณใช้อยู่ ฉันสามารถคิดถึงสิ่งต่อไปนี้:
MATLAB - ความสามารถในการประมวลผลภาพค่อนข้างโอเค แต่สำหรับการประมวลผลขั้นสูงและแบบเรียลไทม์มากขึ้นคุณจะต้องใช้บางสิ่งในระดับต่ำ นอกจากนี้มันไม่ได้มีการพกพาที่ดีมาก
Mathematica - ดีสำหรับการสร้างต้นแบบและการสร้างภาพข้อมูลอย่างรวดเร็ว แต่ทั้งหมดนี้เป็นความเห็นที่ต่ำต้อยของฉัน
OpenCV - ฉันคิดว่านี่เป็นห้องสมุดที่ได้รับความนิยมมากที่สุดในชุมชน IP ความสามารถที่ยอดเยี่ยม (การคำนวณ GPU, โมดูลการเรียนรู้ของเครื่อง, GUI - คุณต้องการอะไรอีก ) รวดเร็วและยังอยู่ระหว่างการพัฒนา เกี่ยวกับชุมชน - มันใหญ่มาก! ส่วนใหญ่ใช้สำหรับการเขียนโปรแกรม C / C ++ แต่ Python (อาจเหมาะกับคุณ)
JAI - Java Advanced Imaging - เฉพาะในกรณีที่คุณชอบ Java ส่วนตัวฉันไม่ชอบมัน
ImageMagick - คุณสามารถใช้กับหลายภาษาโปรแกรมตรวจสอบAPI
CxImage - ดีถ้าคุณต้องการสร้างสิ่งที่ดีกว่า MS Paint และด้วยฟังก์ชั่นของ Photoshop
CImg - เห็นได้ชัดว่าใช้กับ C ++ แต่ OpenCV ยังดีกว่า
PIL - ไลบรารีเฉพาะของ Python ที่มีฟังก์ชั่นมากมาย ถ้าคุณชอบคุณก็สามารถมองใกล้ ๆ
SimpleCV - โดยทั่วไปมันเป็นงูเหลือม OpenCV ผูกกับการปรับแต่งบางอย่าง ใช้งานง่ายและมีประสิทธิภาพมาก
scikit-image - เช่นเดียวกับห้องสมุด Python แต่ในความคิดของฉันแย่กว่า SimpleCV (แม้ว่าเพื่อนของฉันจะไม่เห็นด้วยก็ตาม) ข้อดีอย่างหนึ่งคือพวกเขารวมเอาคุณสมบัติของ DAISY ซึ่งเป็นประโยชน์อย่างมากหากคุณต้องการคุณสมบัติที่หนาแน่น
GIL - ส่วนหนึ่งของ Boostแต่ใช้งานได้น้อยกว่า OpenCV แม้ว่าถ้าคุณชอบและใช้ Boost สำหรับฟังก์ชั่นพื้นฐานบางอย่างมันก็โอเค
ResIL - ความต่อเนื่องของโครงการ DevIL ข้อได้เปรียบที่สำคัญคือการทำงานกับไฟล์หลายรูปแบบรวมถึงไฟล์เกมบางไฟล์
PINK - เขียนครั้งแรกใน C ++ ฉันเพิ่งลองและมันก็ดีมากที่ได้ทำงานกับ การรวมที่ยอดเยี่ยมกับ Python และการฝัง C ที่รวดเร็วนอกจากนั้นมีอัลกอริธึมที่ดีมากมาย
เห็นได้ชัดว่ามีไลบรารีการประมวลผลรูปภาพอีกมากมาย แต่เป็นไลบรารีที่ฉันติดต่อด้วย ดังนั้นหากคุณต้องการเริ่มต้นด้วยบางสิ่งให้เลือก OpenCV (โดยเฉพาะกับกรอบ C ++) - คุณจะไม่เสียใจ! ในทางกลับกันหากทักษะการเขียนโปรแกรมของคุณไม่แข็งแรงคุณอาจต้องการใช้ไลบรารี่แบบ Python ซึ่งง่ายต่อการเรียนรู้และตั้งค่า
MATLAB เป็นภาษาที่ดีที่สุดสำหรับการเรียนรู้การประมวลผลภาพ (มันเป็นความคิดของฉัน)
มันเป็นเรื่องง่ายที่จะเรียนรู้ฮาร์ดแวร์อิสระมีความยืดหยุ่นมากกว่าภาษาที่รวบรวมอาจมีประสิทธิภาพมากกว่าภาษาสคริปต์ (เนื่องจาก DLLs โดยธรรมชาติของมันเหมาะสำหรับการประมวลผลสัญญาณในระดับเครื่อง) มันมีการสนับสนุนด้านวิชาการและวิศวกรรมที่ดี
C / C ++ เป็นภาษาที่ดีที่สุดสำหรับการสร้างแอปพลิเคชันแบบสแตนด์อโลนของการประมวลผลภาพ ภายใต้ชุด IDE ของคุณคุณอาจสร้างรหัสดั้งเดิมซึ่งมีประสิทธิภาพมากที่สุด และ IDEs สำหรับ C ++ ให้คุณสมบัติการดีบักในระดับที่ดีขึ้น
มีการใช้ภาษาสคริปต์บางภาษา แน่นอนพวกเขามีความยืดหยุ่นพกพาแม้มีประสิทธิภาพมาก แต่การดีบักอาจไม่ง่ายในระดับต่ำ
ความสามารถในการประมวลผล GPU ใหม่ของ CUDA, OpenCL และอื่น ๆ ทำให้การประมวลผลทางคอมพิวเตอร์เพิ่มขึ้นอย่างมาก (อย่างไรก็ตามพวกเขายากที่จะเรียนรู้เนื่องจากคุณควรระวังสถาปัตยกรรมฮาร์ดแวร์ GPU ไปป์ไลน์เพื่อใช้ประโยชน์จากประสิทธิภาพที่เพิ่มขึ้น)
หากคุณต้องการหมุนอัลกอริธึมหรือรหัสของคุณเองให้รวม OpenCL ไว้ด้วยเนื่องจากเมล็ดในการประมวลผลภาพจำนวนมาก "ขนานกันอย่างน่าอับอาย"
หรือสำหรับ Big Iron Fortran ยังคงใช้ภาษาอื่นเป็นส่วนใหญ่ในการแสดงผลเวกเตอร์ที่เป็นตัวเลข