2011-10-11 20 views
5

ile kilitlemek için bu matrisi MATLAB, 200 derin x 600 genişliğinde var. 2 cm x 6 cm genişliğinde bir görüntüyü temsil eder. Bu görüntüyü, uygun boyutlara, yani 2 cm x 6 cm'ye kilitlenecek şekilde nasıl çizebilirim? image ya da imagesc komutlarını kullanırsam, herşeyi biçimini uzatır ve yanlış boyuta gösterir. X ve y eksenlerinin orantılı olduğu bir görüntüyü göstermenin bir yolu var mı?Görüntü boyutlarını MATLAB

İkinci soru, bu görüntüyü 640x480 çerçeveye (solda ve sağda 20 piksel siyah kenar boşluğu, altta 280 piksel siyah kenar boşluğu) ayarlamam gerekiyor. Bunu yapmanın bir yolu var mı?

cevap

10

boy oranını korumak için, axis equal veya axis image komutları kullanabilirsiniz.

belgeleri teklif:

  • axis equal veri birimleri her yönde aynı şekilde boy oranı belirlenir. X, y ve z ekseninin en boy oranı, x, y ve z yönlerindeki veri birimleri aralığına göre otomatik olarak ayarlanır.

  • axis image

    arsa kutusu ikinci soru için data`

etrafında sıkıca oturur dışında eksen eşit aynıdır: diğer cevaplar alternatif olarak

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])

İkinci soru:

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

, sen isteyebilir:

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

Bunu çizdikten sonra yaptığınızdan emin olun Diğer eksen özelliklerini elde etmek için görüntü doğru. İkinci soru için

, renk kanallarının sayısı ile ilgilenir:

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