2009-09-13 68 views
12

Gần đây tôi đã trở lại xử lý hình ảnh. Hầu hết những gì tôi đã sử dụng trước đây là Matlab. Tôi muốn chuyển sang ngôn ngữ thuận tiện và cởi mở hơn.Thư viện xử lý hình ảnh

Sau khi đã sử dụng thư viện Python PIL và đã hiểu rõ nó có, chỉ có bộ lọc 3 x3 và 5x5, tôi quyết định hỏi ở đây nếu ai đó biết thư viện xử lý hình ảnh tốt.

Thư viện xử lý hình ảnh hiện có (bất kỳ ngôn ngữ nào)? Chúng có nhanh/trưởng thành/vẫn còn trong giai đoạn sớm không?

+0

Bạn muốn làm loại chức năng nào? Bạn cần thư viện đầy đủ tính năng như thế nào? –

+0

@ James, nhu cầu của riêng tôi là khá nhỏ cho thời điểm này, nhưng chúng ta hãy có câu hỏi này càng rộng càng tốt. Ít nhất, có thể lọc với một hạt nhân tùy ý là phải cho bất kỳ thư viện xử lý ảnh phong nha nào. Tôi đoán những thứ như FFT hoặc biến đổi hình học cũng là một phần của những điều cơ bản. – glmxndr

Trả lời

4

Kiểm tra trăn Scipy library. Đó là mã nguồn mở thư viện thao tác mảng n chiều nhanh trong python. Nó có tất cả các công cụ xử lý ảnh cơ bản:

nó không có tất cả các chức năng tiên tiến hơn của hình ảnh của Matlab Processing Toolbox. Tuy nhiên, như Vereb đã đề xuất, rất nhiều trong số đó có thể được tìm thấy trong ITK (cũng có sẵn trong hương vị python).

Giống như bạn, tôi muốn thoát khỏi MATLAB sang ngôn ngữ động như python. Và cũng giống như bạn, tôi đã thất vọng bởi PIL, khi tôi nhận ra đó chỉ là một ImageMagick trong python. Bạn vẫn sẽ cần sử dụng PIL để đọc/ghi hình ảnh.

Để có được một kinh nghiệm xử lý hình ảnh Matlab như với python được Numpy/Scipy, MatplotlibSpyder. Tất cả trong số đó và nhiều hơn nữa được đóng gói thuận tiện trong Python(X,Y) chỉ dành cho cửa sổ.

2

OpenCV có bindings python http://opencv.willowgarage.com - như Vereb đề cập, ITK cũng là đỉnh cao.

+0

Và openCV sẽ sử dụng IPP nếu được cài đặt –

12

OpenCV là một trang rất nhanh và trưởng thành trong C. Mặt xấu là nó không phải là hướng đối tượng, mà không phải là một trong các tiêu chí của bạn mà tôi cho là. Rất nhiều chức năng như phân tích thành phần được kết nối được bao gồm.

JAI (Java Advanced Imaging) là nhanh và rất trưởng thành và nó cũng hướng đối tượng. Nó có thể mất một chút để làm ấm với thư viện này. Nhưng mạnh mẽ và dễ quản lý.

Nếu bạn dự định thực hiện một số nghiên cứu hoặc tạo mẫu cho OpenCV, nếu mục đích của bạn là phát triển phần mềm thương mại hoặc quy mô lớn, tôi khuyên bạn nên dùng JAI.

CẬP NHẬT

OpenCV hiện có C++ và Python API. Tôi đã sử dụng OpenCV C++ trong 3 tuần nay, API tốt hơn C API. OpenCV ổn định hơn và cộng đồng đã phát triển. Và có rất nhiều sẵn sàng để sử dụng các thuật toán tiên tiến trong OpenCV. Nó là đáng xem.

6

Tôi ngạc nhiên không ai đề cập đến ImageMagick. Nó là một thư viện xử lý hình ảnh nguồn mở rất phổ biến và chúng có các ràng buộc cho thực tế bất kỳ ngôn ngữ nào.

+0

ImageMagick cũng rất chậm trong nhiều tác vụ. – unixman83

3

Nguyên tắc hiệu suất của Intel rất nhanh và rất trưởng thành. Hầu hết chức năng đều ở mức độ thấp, từ các bộ lọc tuyến tính, các phép toán số học, FFT, các bước sóng, các phép biến đổi hình học (...), nhưng nó cũng chứa một vài thuật toán cấp cao, ví dụ: để inpainting hoặc phân đoạn. Nó cực kỳ nhanh chóng và được ghi chép đầy đủ. Tôi chắc chắn sẽ giới thiệu nó cho phát triển thương mại (không chắc chắn nếu có giấy phép nguồn mở).

2

Như ai đó đã đề cập, bạn có thể sử dụng ITK, có thể được sử dụng với VTK làm bộ công cụ trực quan hóa. Vấn đề duy nhất bạn sẽ thấy là chúng không dễ xây dựng nếu bạn định sử dụng trình bao bọc python của chúng (và thậm chí còn khó khăn hơn nếu bạn cố gắng xây dựng wrapITK dự án mã nguồn mở của bên thứ ba).

Nhưng bạn có thể sử dụng python (x, y), mà đi kèm với tất cả những công cụ này (và nhiều hơn nữa) chạy out-of-the-box và trong python: http://www.pythonxy.com

Hy vọng nó giúp.

2

Thư viện xử lý hình ảnh nhanh nhất và chuyên nghiệp nhất (và SDK hoàn chỉnh) là HALCON. (www.mvtec.com) Nó không phải là mã nguồn mở nhưng hỗ trợ đầy đủ C#, C++, C, VB.Net, v.v.

Các vấn đề liên quan