2011-10-11 41 views
5

Vì vậy, tôi có ma trận này trong MATLAB, sâu 200 x 600. Nó đại diện cho một hình ảnh rộng 2cm x rộng 6cm. Làm thế nào tôi có thể vẽ hình ảnh này để nó bị khóa vào các kích thước thích hợp, tức là 2cm x 6cm? Nếu tôi sử dụng các hình ảnh hình ảnh hoặc imagesc, nó sẽ kéo dài toàn bộ hình dạng và hiển thị kích thước sai. Có cách nào để khóa nó vào hiển thị một hình ảnh mà các trục x và y là tỷ lệ thuận?Cách khóa kích thước hình ảnh trong MATLAB

Câu hỏi thứ hai, tôi cần phải đặt hình ảnh này thành khung 640x480 (lề đen 20 pixel ở bên trái và bên phải, lề màu đen 280 pixel ở dưới cùng). Có cách nào để làm việc này không?

Trả lời

10

Để giữ tỉ lệ, bạn có thể sử dụng axis equal hoặc axis image lệnh.

Trích dẫn tài liệu:

  • axis equal đặt tỉ lệ để các đơn vị dữ liệu đều giống nhau ở mọi hướng. Tỷ lệ khung hình của trục x, y và z được điều chỉnh tự động theo phạm vi các đơn vị dữ liệu theo các hướng x, y và z.

  • axis image cũng giống như trục bằng ngoại trừ rằng hộp cốt truyện phù hợp chặt chẽ xung quanh dữ liệu`

Đối với câu hỏi thứ hai:

third_dimension_size=1; %# for b&w images, use 3 for rgb 
framed_image=squeeze(zeros(640,480,third_dimension_size)); 
framed_image(20:20+600-1,140:140+200-1)= my_600_200_image; 

imagesc(framed_image'); axis image; 
2

set(gca,'DataAspectRatio',[1 1 1])

Thứ hai câu hỏi:

new_image = zeros(480,640); 
new_image(20:(200+20-1),20:(600+20-1)) = old_image; 
2

Để thay thế cho câu trả lời khác, bạn có thể muốn:

set(gca, 'Units', 'centimeters', 'Position', [1 1 6 2]) 

Đảm bảo bạn thực hiện việc này sau khi vẽ đồ thị hình ảnh để có được các thuộc tính trục khác chính xác.

Đối với câu hỏi thứ hai, chăm sóc với số lượng kênh màu:

new_image = zeros(480,640, size(old_image)); 
new_image(20:(200+20-1),20:(600+20-1),:) = old_image; 
Các vấn đề liên quan