Python hay matlab tốt hơn để xử lý ảnh?

Chúng ta thường nhầm lẫn các công cụ của chúng ta với thủ công của chúng ta. Các công cụ giúp bạn thực hành nghề thủ công của mình, nhưng chúng không giúp bạn trở thành một nghệ nhân giỏi. Một thợ thủ công giỏi có nhiều dụng cụ khác nhau trong túi và cô ấy sử dụng một cách thận trọng dụng cụ phù hợp với công việc. Cô ấy không kết hôn với các công cụ. Cô ấy đã kết hôn với nghề của mình

Tôi thường thích thú với những cuộc chiến tranh giành ngôn ngữ lập trình. Mọi người có ý kiến ​​rất mạnh mẽ về cái nào tốt hơn. Sự thật là một lập trình viên nên chọn ngôn ngữ phù hợp với nhiệm vụ của họ. Bạn muốn nhanh chóng xây dựng một ứng dụng web? . Muốn viết mã hiệu suất cao cho một thiết bị nhúng. Hãy thử C

Trong tầm nhìn máy tính, chúng ta phải đối mặt với những lựa chọn tương tự. Kỹ sư/lập trình viên thị giác máy tính nên học công cụ nào — OpenCV sử dụng C++, OpenCV sử dụng Python hoặc MATLAB? . Một thập kỷ trước không có thư viện tốt cho thị giác máy tính. Nếu bạn muốn học, bạn chỉ cần chọn một cuốn sách và bắt đầu mã hóa thư viện thuật toán thị giác máy tính nhỏ của riêng mình. Rất may, mọi thứ bây giờ tốt hơn nhiều

Nếu bạn là người mới bắt đầu, tôi khuyên bạn nên sử dụng con đường ít kháng cự nhất và chọn một công cụ mà bạn quen thuộc. Nếu bạn là lập trình viên python, hãy sử dụng OpenCV với Python. Nếu bạn biết C++, hãy sử dụng C++ với OpenCV. Điều này cũng đúng với MATLAB. Điều đó nói rằng trong một vài tháng nữa, bạn sẽ không còn là người mới bắt đầu. Bạn có thể đang tìm cách áp dụng kiến ​​thức mới thu được này vào thế giới thực. Bạn có thể đang nghĩ đến một dự án phụ mới hoặc đang tìm kiếm một công việc mới trong lĩnh vực này. Nó trả tiền (đôi khi theo nghĩa đen) để biết cách đưa ra lựa chọn của bạn. Vì vậy, đây là những suy nghĩ của tôi

MATLAB cho thị giác máy tính

Cho đến gần đây Thị giác máy tính là một lĩnh vực nghiên cứu ở giai đoạn sơ khai. Những người làm việc trong Computer Vision chủ yếu là trong phòng thí nghiệm học thuật hoặc nghiên cứu. Công cụ lựa chọn của họ là MATLAB, và trong thời gian dài nhất, OpenCV bị lu mờ so với những gì MATLAB và cộng đồng của nó cung cấp. Trong 7 năm qua, thủy triều đã thay đổi. Dưới đây là một số ưu điểm của việc sử dụng MATLAB

Tại sao bạn nên sử dụng MATLAB cho thị giác máy tính. Ưu điểm

  1. Thư viện ma trận mạnh mẽ. Chúng tôi không chỉ coi một hình ảnh là một ma trận nhiều chiều trong thị giác máy tính, chúng tôi còn sử dụng rất nhiều đại số tuyến tính trong các thuật toán khác nhau. Các thủ tục đại số tuyến tính của MATLAB rất mạnh mẽ và cực kỳ nhanh (khi được sử dụng đúng cách). Khi chúng tôi cần giải quyết một hệ thống tuyến tính thưa thớt lớn như một phần của thuật toán. Đó là mã một dòng trong MATLAB — đại loại như X = A \ b. Chúng tôi đã giả định rằng việc triển khai C++ của chúng tôi sẽ nhanh hơn ít nhất 3 lần so với việc triển khai MATLAB. Phiên bản đầu tiên triển khai C++ của chúng tôi hóa ra lại chậm hơn phiên bản MATLAB. Chúng tôi đã mất nhiều ngày để phù hợp với hiệu suất của thói quen MATLAB. Vì vậy, trong MATLAB, một toán tử đơn lẻ như dấu gạch chéo ngược ( \ ) đôi khi là một tập hợp các thuật toán mạnh mẽ mà MATLAB chọn phù hợp cho bạn
  2. hộp công cụ. Dù nhu cầu của bạn là gì, có một hộp công cụ cho điều đó. Họ có hộp công cụ xử lý hình ảnh, hộp công cụ thị giác máy tính, hộp công cụ thống kê và học máy cung cấp triển khai nhiều thuật toán rất hữu ích. Các chức năng thường cung cấp một giao diện sạch sẽ và rõ ràng. Nhiều vấn đề về thị giác máy tính thường được thiết lập như là vấn đề tối ưu hóa. Bạn đang cố gắng cực đại hóa hoặc cực tiểu hóa một số hàm mục tiêu dưới các ràng buộc nhất định. Hộp công cụ tối ưu hóa trong MATLAB cung cấp các triển khai xuất sắc của nhiều thuật toán tối ưu hóa
  3. Công cụ trực quan hóa và gỡ lỗi. Một trong những điều thú vị khi sử dụng MATLAB là việc viết mã, trực quan hóa kết quả và gỡ lỗi diễn ra trong một môi trường tích hợp. Môi trường giúp bạn cực kỳ năng suất
  4. Hoạt động với OpenCV. Bạn có thể giao tiếp với OpenCV bằng Giao diện OpenCV của MATLAB
  5. tài liệu tuyệt vời. Ngay cả những người ủng hộ trung thành của OpenCV cũng thừa nhận rằng tài liệu của nó thật tệ. Ngược lại, MATLAB đi kèm với tài liệu và ví dụ tuyệt vời có thể dễ dàng truy cập trong IDE. Chỉ riêng tài liệu tuyệt vời thôi cũng có thể giúp viết mã trong MATLAB nhanh hơn gấp 2 lần so với sử dụng OpenCV. Các hàm MATLAB cũng được thiết kế tốt hơn so với OpenCV. e. g. so sánh mã đơn giản này để hiển thị hình ảnh trong OpenCV và MATLAB

// MATLAB 
imshow(im);

// OpenCV 
imshow("myWindow", im);

Hầu hết thời gian, tôi chỉ muốn hiển thị một hình ảnh. Gọi nó là “Hình ảnh 1” vì Chúa thay vì buộc tôi phải gõ đi gõ lại tên cửa sổ ( “myWindow” )

6. Cộng đồng nghiên cứu lớn. Như tôi đã đề cập trước đó, MATLAB cực kỳ phổ biến trong giới học thuật. Các bản trình diễn nghiên cứu mới nhất thường được chia sẻ dưới dạng mã MATLAB. Nếu bạn muốn đi đầu, bạn phải đọc được mã MATLAB

Tại sao bạn không nên sử dụng MATLAB cho thị giác máy tính. Nhược điểm

  1. Chi phí rất LỚN. MATLAB đắt khủng khiếp. Chúng ta hãy bắt đầu với MATLAB cơ bản ($2,150) và sử dụng hộp công cụ thị giác máy tính ($1,350). Nhưng hộp công cụ thị giác máy tính yêu cầu hộp công cụ xử lý hình ảnh ($1000). Thêm hộp công cụ tối ưu hóa ($1,350) và máy học ($1000). Điều đó mang lại tổng số tiền lớn của bạn lên tới $6850. Ok, bây giờ bạn đã xây dựng ứng dụng của mình và muốn triển khai nó. Chà, bạn phải mua trình biên dịch MATLAB ($4,250). Oh bạn muốn nó cho hai hệ điều hành khác nhau? . MATLAB có ý nghĩa nếu bạn mua nó với giá chiết khấu thông qua trường Đại học của bạn hoặc công ty của bạn có giấy phép
  2. Đường cong học tập. MATLAB là một công cụ ma trận. Có một cách MATLAB để viết mã khác với các ngôn ngữ lập trình mục đích chung như C ++ hoặc Python. Và nếu bạn không viết mã theo cách MATLAB, mã của bạn có thể cực kỳ chậm
  3. thời gian chạy chậm hơn. Một chương trình MATLAB điển hình chạy chậm hơn nhiều lần so với chương trình C++. Các thói quen MATLAB tích hợp có thể rất nhanh, nhưng mã bạn viết trong MATLAB thường sẽ chạy chậm hơn nhiều. Thông thường, mọi người kết thúc mã hóa các phần tính toán chuyên sâu trong C và tích hợp nó với mã MATLAB bằng mex

OpenCV (C++) cho thị giác máy tính

OpenCV là công cụ chính của tôi để phát triển các ứng dụng thị giác máy tính. Tôi đã tạo nguyên mẫu rất nhiều trong MATLAB, nhưng ngoại trừ một lần, phiên bản sản xuất luôn dựa trên OpenCV. Hãy nhìn vào những ưu và nhược điểm

Tôi đã hợp tác độc quyền với OpenCV. org mang đến cho bạn các khóa học chính thức về Trí tuệ nhân tạo, Thị giác máy tính và Học sâu để đưa bạn vào lộ trình có cấu trúc từ những bước đầu tiên đến khi thành thạo

Tìm hiểu thêm

Tại sao bạn nên sử dụng OpenCV (C++) cho Computer Vision. Ưu điểm

  1. Nó miễn phí. . Phần lớn OpenCV là miễn phí — tôi. e. miễn phí như trong bia, và miễn phí như trong bài phát biểu. Bạn có thể sử dụng OpenCV một cách tự do trong ứng dụng thương mại của mình và bạn có thể xem nguồn và khắc phục sự cố nếu cần. Bạn không phải mở nguồn dự án của mình nếu bạn sử dụng OpenCV
  2. Thư viện tối ưu khổng lồ. Bộ sưu tập các thuật toán có sẵn trong OpenCV lấn át mọi thứ ngoài kia. Thư viện cũng được tối ưu hóa cho hiệu suất. Với OpenCV 3, bạn có thể sử dụng API trong suốt để dễ dàng sử dụng các thiết bị tuân thủ OpenCL (e. g. GPU) trên máy của bạn. Nhiều thuật toán có triển khai CUDA
  3. Nền tảng và thiết bị. Rõ ràng là bạn có thể sử dụng OpenCV trong ứng dụng dành cho máy tính để bàn của mình hoặc làm phần phụ trợ của ứng dụng web của bạn. Do tập trung vào hiệu suất OpenCV (C/C++) là thư viện thị giác được lựa chọn trong nhiều ứng dụng thị giác nhúng và ứng dụng di động
  4. Cộng đồng lớn. Có một cộng đồng lớn các nhà phát triển (47.000 hoặc hơn) sử dụng và hỗ trợ OpenCV. Nó đã được tải xuống hơn 9 triệu lần. Không giống như cộng đồng MATLAB bao gồm các nhà nghiên cứu, cộng đồng OpenCV là sự kết hợp của nhiều người từ nhiều lĩnh vực và ngành công nghiệp. Sự phát triển OpenCV được tài trợ bởi các công ty như Intel, AMD & Google. Không cần phải nói, blog này là một phần của cộng đồng sôi động gồm những người đang cố gắng giúp đỡ lẫn nhau

Tại sao bạn không nên sử dụng OpenCV (C++) cho Computer Vision. Nhược điểm

  1. Khó khăn cho người mới bắt đầu. Nếu bạn không có kinh nghiệm lập trình trong C++, việc sử dụng OpenCV (C++) sẽ rất khó khăn. Thay vào đó, có lẽ bạn nên thử sử dụng Python
  2. tài liệu yếu. Tài liệu OpenCV không tốt. Đôi khi bạn cần hiểu rõ về thuật toán và thực sự đọc tài liệu, bởi vì tài liệu không phải lúc nào cũng giải thích ý nghĩa của các tham số và cách chúng ảnh hưởng đến kết quả. Tài liệu không phải lúc nào cũng đi kèm với mã mẫu và điều đó khiến nó khó hiểu hơn. Mã mẫu đi kèm với OpenCV, mặc dù rất hữu ích, nhưng cũng không được ghi chép đầy đủ. Hãy chỉ nói rằng đây là công việc đang được tiến hành và mọi người đang tham gia để làm cho nó tốt hơn
  3. Thư viện máy học nhỏ. Một kỹ sư thị giác máy tính thường xuyên cần nhiều thói quen học máy. OpenCV có một bộ thuật toán máy học nhỏ so với các lựa chọn có sẵn khi bạn đang sử dụng OpenCV (Python)
  4. Trực quan hóa và gỡ lỗi. Khó gỡ lỗi và trực quan hóa trong bất kỳ môi trường C++ nào. Điều này đặc biệt đúng nếu bạn đang nghĩ ra một thuật toán mới từ đầu. Thỉnh thoảng tôi đổ dữ liệu vào đĩa và phân tích nó bằng MATLAB

OpenCV (Python) cho thị giác máy tính

Tôi tin rằng các ràng buộc python cho OpenCV đã đóng góp khá nhiều vào sự phổ biến của nó. Nó là một lựa chọn tuyệt vời để học Thị giác máy tính và đủ tốt cho nhiều ứng dụng trong thế giới thực. Hãy nhìn vào những ưu và nhược điểm

Tại sao bạn nên sử dụng OpenCV (Python) cho Computer Vision. Ưu điểm

  1. Dễ sử dụng. Nếu bạn là một lập trình viên python, việc sử dụng OpenCV (Python) sẽ rất dễ dàng. Python là một ngôn ngữ dễ học (đặc biệt là so với C++). Nó cũng là một ngôn ngữ đầu tiên tuyệt vời để học
  2. Python đã trở thành ngôn ngữ của máy tính khoa học. Vài năm trước MATLAB được gọi là ngôn ngữ của máy tính khoa học. Nhưng giờ đây, với OpenCV, numpy, scipy, scikit-learning và matplotlib Python cung cấp một môi trường mạnh mẽ để học và thử nghiệm với Computer Vision và Machine Learning
  3. Trực quan hóa và gỡ lỗi. Khi sử dụng OpenCV (Python), bạn có quyền truy cập vào một số lượng lớn các thư viện được viết cho Python. Trực quan hóa bằng matplotlib cũng tốt như MATLAB. Tôi thấy mã gỡ lỗi trong Python dễ hơn trong C++, nhưng nó không hoàn toàn phù hợp với tính siêu dễ của MATLAB
  4. Xây dựng phụ trợ web. Python cũng là một ngôn ngữ phổ biến để xây dựng trang web. Các khung như Django, Web2py và Flask cho phép bạn nhanh chóng kết hợp các ứng dụng web. Rất dễ sử dụng OpenCV (Python) cùng với các khung web này. e. g. đọc hướng dẫn này giải thích cách biến mã OpenCV của bạn thành api web trong vòng chưa đầy 10 phút

Tại sao bạn không nên sử dụng OpenCV (Python) cho Computer Vision. Nhược điểm

  1. Tài liệu yếu. Như tôi đã đề cập trước đây, tài liệu OpenCV(C++) không tốt lắm. Nhưng tài liệu về python thậm chí còn tệ hơn. Người dùng mới bắt đầu đoán cách sử dụng các chức năng nhất định. e. g. tại thời điểm viết bài này, hầu như không thể tìm thấy tài liệu python cho cv2. Subdiv2D. Bạn cũng sẽ tìm thấy ít hướng dẫn hơn cho OpenCV (Python)
  2. Thiếu hỗ trợ. Các công ty hỗ trợ OpenCV (Intel, AMD, NVidia, v.v.). ) có một con chó trong cuộc chiến khi nói đến phiên bản C++ của OpenCV. Họ muốn bạn sử dụng OpenCV và mua phần cứng của họ (CPU/GPU, v.v. ) để chạy các thuật toán này. Nhưng OpenCV (Python) dường như là đứa con riêng của người đầu đỏ dường như không thu hút được sự chú ý của họ. e. g. Tôi vẫn chưa biết liệu API trong suốt có được hỗ trợ trong OpenCV ( Python )
  3. Thời gian chạy chậm hơn. So với C++, các chương trình của bạn trong Python thường sẽ chạy chậm hơn. Để thêm một cú đấm bổ sung, bạn có thể sử dụng GPU (sử dụng CUDA hoặc OpenCL) trong OpenCV (C++) và có mã chạy nhanh hơn gấp 10 lần so với triển khai Python
  4. OpenCV được viết bằng C/C++. Một trong những lợi ích tuyệt vời của thư viện nguồn mở là khả năng sửa đổi chúng cho phù hợp với nhu cầu của bạn. Nếu bạn muốn sửa đổi OpenCV, bạn phải sửa đổi mã nguồn C/C++

Đăng ký và tải xuống mã

Nếu bạn thích bài viết này và muốn tải xuống mã (C++ và Python) và các hình ảnh ví dụ được sử dụng trong bài viết này, vui lòng nhấp vào đây. Ngoài ra, hãy đăng ký để nhận Hướng dẫn về Tài nguyên Thị giác Máy tính miễn phí. Trong bản tin của mình, chúng tôi chia sẻ các hướng dẫn và ví dụ về OpenCV được viết bằng C++/Python, các thuật toán và tin tức về Thị giác máy tính và Máy học.

Tải mã ví dụ xuống



Bản tóm tắt

Là kỹ sư và thợ thủ công, chúng ta cần sử dụng đúng công cụ cho đúng công việc. Cuối cùng, bạn phải học tất cả các công cụ trong giao dịch này. Theo nguyên tắc chung, tôi sử dụng MATLAB/OpenCV (Python) để tạo mẫu các thuật toán mới và sử dụng OpenCV (C++) trong sản xuất

Ngôn ngữ nào là tốt nhất để xử lý hình ảnh?

C hoặc C++ đã được sử dụng để xử lý hình ảnh vì nó chứa các thư viện gốc như EmguCV, OpenGL và OpenCV có tính năng thông minh tích hợp, chủ yếu được sử dụng để xử lý hình ảnh. Cho đến bây giờ C ++ được coi là ngôn ngữ lập trình nhanh nhất.

Python có tốt cho xử lý ảnh không?

Python là một trong những ngôn ngữ lập trình được sử dụng rộng rãi cho mục đích này. Các thư viện và công cụ tuyệt vời của nó giúp đạt được nhiệm vụ xử lý hình ảnh rất hiệu quả .

MATLAB hay Python cái nào tốt hơn?

Sự khác biệt kỹ thuật lớn nhất giữa MATLAB và Python là trong MATLAB, mọi thứ được coi là một mảng, trong khi trong Python, mọi thứ là một đối tượng tổng quát hơn. For instance, in MATLAB, strings are arrays of characters or arrays of strings, while in Python, strings have their own type of object called str .

Nền tảng nào là tốt nhất để xử lý hình ảnh?

OpenCV .
Tìm kiếm kết quả âm thanh nổi (FullHD)
Luồng quang
Hệ thống tích hợp liên tục
Kiến trúc được tối ưu hóa CUDA
Phiên bản android
API Java
Hệ thống kiểm tra hiệu suất tích hợp
đa nền tảng