7

Tôi đang làm việc trên một ứng dụng Midlet. Tôi thấy mình cần phải mở rộng hình ảnh rất thường xuyên. Điều này đã trở thành một vấn đề bởi vì một số điện thoại khá chậm và mở rộng quá lâu.Java - Tôi cần thuật toán chia tỷ lệ hình ảnh rất nhanh

Hiện tại tôi đang sử dụng Image.createRGBImage (int, int, int, boolean) để chia tỷ lệ hình ảnh.

Tôi đã tự hỏi liệu có ai trong số các bạn biết một cách rất hiệu quả và nhanh chóng để mở rộng hình ảnh hay không.

Lưu ý: đây là ứng dụng Midlet nên chỉ có JavaME, nghĩa là tôi không có quyền truy cập vào một số thư viện khác có sẵn trong phiên bản java đầy đủ.

Lưu ý2: phần lớn quy mô của tôi được thực hiện từ hình ảnh nhỏ đến lớn, mặc dù tôi cũng làm giảm kích thước hình ảnh.

+1

bạn đang nói về kích thước nào? là% thay đổi tùy ý hoặc một số đơn giản nhiều (như 2x)? –

+0

một cách để tối ưu hóa là sử dụng tính năng mipmapping: http://www.3drender.com/glossary/mipmapping.htm – appas

+0

Kích thước tỷ lệ là tùy ý. Giả sử hình ảnh của tôi là 100px x 65px. Tôi cần phải mở rộng nó đến bất kỳ kích thước nào tôi muốn. Giả sử 200px x 500px hoặc 1200px x 10px. Vì vậy, nó cần phải được thu nhỏ lên hoặc xuống theo chiều dọc hoặc chiều ngang, và/hoặc bất kỳ sự kết hợp của cả hai. – Tony

Trả lời

29

Hãy nhớ rằng luôn có giao dịch giữa tốc độ và chất lượng hình ảnh khi thảo luận về thuật toán chia tỷ lệ và giải pháp lý tưởng cho trường hợp của bạn có thể yêu cầu một số nghiên cứu và thử nghiệm.

Nearest neighbor là việc thực hiện đơn giản nhất và nhanh nhất của hình ảnh rộng.

Có giới thiệu hay về quy mô/thay đổi kích thước hình ảnh trên Coding Horror đánh giá một số kỹ thuật và so sánh chất lượng của chúng.

Tôi tưởng tượng bạn đang làm việc với một thiết bị hiển thị rất nhỏ, vì vậy chất lượng hình ảnh không thực sự quan trọng ở cuối. Một số người đang gọi thistriển khai mở rộng hình ảnh nhanh nhất cho J2ME.

Nhưng nếu bạn sẵn sàng đọc một số nội dung khác, this paper trình bày một thuật toán chi phí thấp (có nghĩa là "rất nhanh") để mở rộng đáng kể trên nội suy lân cận gần nhất. Có sẵn mã nguồn, và chúng cũng trình bày một sự tiến hóa của nghiên cứu đó here.

Cuối cùng nhưng không kém, cvResize() từ OpenCV (thư viện nguồn mở/nền tảng để xử lý hình ảnh). Những người ở nhà để xe liễu khá giỏi trong việc thực hiện các quy trình xử lý hình ảnh/video nhanh chóng và chức năng này cung cấp một số kỹ thuật để mở rộng quy mô, vì vậy có thể đáng để kiểm tra việc triển khai hình ảnh.

+1

Cảm ơn. Tôi hiện đang sử dụng kỹ thuật bạn mô tả trong liên kết của bạn: "Một số người gọi đây là triển khai mở rộng quy mô hình ảnh nhanh nhất cho J2ME". Tôi sẽ xem xét các kỹ thuật khác và thực hiện một số thử nghiệm và xem liệu tôi có nhận được bất kỳ quy mô nào nhanh hơn hay không. Thumbs up cho câu trả lời xuất sắc của bạn. Điểm đi cho bạn. Cảm ơn Karl. – Tony

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