0

matlab で 50 から 800 枚の画像のバッチを処理しています。プログラムはいくつかの .tif イメージを読み取り、いくつかの変更を行った後、imwrite を使用して .tif イメージを出力します。

問題は、出力画像に、使用しているスケールの参照が必要なことです。n ピクセルのバーのようなもので、mm で相当するもの (顕微鏡測定で通常使用されるものなど)、または mm でスケールを示すいくつかの軸がさらに優れています。

私はすでにmmで1ピクセルに相当することを知っていますが、すべての画像でそれを表示する方法がわかりません(画像がたくさんあるので、自動化する必要があることに注意してください)。

ありがとう。

ここに私が今使っているコードがあります:

dird=['G:\Alexis\interf camara rapida\Project_2013.08.07_2\W_80_cilindro_4mm\00-50-C2-1D-7E-AB_AutoSave_003_001\00-50-C2-1D-7E-AB_AutoSave_003_001_FR0'];

dirfondo = [dird,'.tif']; % La imagen de fondo debe estar en el mismo lugar que las imagenes a restarselo

fondo = imread(dirfondo);

zonainter=imshow(fondo);

zona=round(ginput(2));


xmin=zona(1,1);

ymin=zona(1,2);
xmax=zona(2,1);
ymax=zona(2,2);



j=0;

for i =1:1:200;

mil=floor(i/1000);
cien=floor((i-mil*1000)/100);
diez=floor((i-mil*1000-cien*100)/10);
uno=(i-mil*1000-cien*100-diez*10); 
numero=[num2str(cien),num2str(diez),num2str(uno)];

i; % sin el punto y coma voy viendo por que número va.

j = j + 1 ; 

oldfileimage = [dird,numero,'.tif'];

 %     numerosalida = [num2str(i)]; 

newfileimage = ['im',numero,'.tif'];

inter = imread(oldfileimage); %Imagen cruda 

rango = 255;  %// choose the new maximum. (new minimum always at 0.0).



imgMin = double(min(min(inter(xmin:xmax,ymin:ymax))));
 imgMax = double(max(max(inter(xmin:xmax,ymin:ymax))));
 inter = ((inter - imgMin)*(rango/(imgMax - imgMin)));


imwrite(inter',newfileimage,'tif');
end;
imshow(inter);
4

1 に答える 1

0

とを使用linetextて、独自のスケール バーを描画するか、このファイル交換オプションを試すことができます。

于 2013-08-29T19:43:58.697 に答える