Öncelikle basit olarak Matlab ile dosya acma- veri yazma- veri okuma- dosya kapama işlemlerini gostermek istiyorum. Daha önce herhangi bir (C gibi) programlama dili bilen arkadaslar kodları daha kolay anlayacaktır. Kullandığım komutlar hakkında daha geniş bilgiyi Matlab ın Help inden veya Matlab ın resmi internet sitesinden erişebilirsiniz.
Öncelik le fopen ile txt uzantılı bir dosya açarız.
fid=fopen(‘imgeisleme.txt’,‘w+’); % -1 ise basarısız
fid2=fopen(‘imgeisleme2.txt’,‘w+’);
Eger fid degeri -1 e esit ise acmak istediğimiz dosya açılamamıştır. Eger pozitif bir değerse acmak istediğimiz dosya açılmıştır. Kod içindeki w+ yazmak ve okumak için açıldığını göstermektedir.
Dosyanın açılıp açılmadığını aşağıdaki gibi test edebiliriz.
if fid<0
error ‘current.txt okunamıyor..’;
end
if fid2<0
error ‘current.txt okunamıyor..’
end
Şimdi Matlab ın kendi içinde var olan cameraman imgesini imread komutu ile okuyoruz. veri uzerinde matematiksel işlemler yapılacaksa double tipine cevirmemiz uygun olur.
imge=double(imread(‘cameraman.tif’));
[w,h]=size(imge);
size komutu imgemizin boyut (satir,sutun)bilgisini, belirtilen değişkenlere atar.
Okumuş olduğumuz cameraman imgesini açmış olduğumuz dosyaya yazmak için fwrite komutunu kullanırız.
count=fwrite(fid,imge); % binary yazar
count2=fprintf(fid2,‘%03.4f ‘,imge); % float yazıyor
son olarak acmış olduğumuz dosyayı fclose komutu ile kapatırız.
st=fclose(fid); % 0 ise basarılı, -1 ise basarısız
st2=fclose(fid2);
Şimdi aşağıdaki program ile yukarıda yapmış olduğumuz işlemin sağlamasını yaparız. Kullanılan reshape komutunu ile verimizi boyutlandırabilmekteyiz. Mesela [1,12] boyutlu a diziyi reshape(a,3,4) komutu ile [3,4] boyutlu matris haline getiririz.
fid=fopen(‘imgeisleme.txt’,‘r’);
fid2=fopen(‘imgeisleme2.txt’,‘r’);
if fid<0
error ‘current.txt okunamıyor..’;
end
if fid2<0
error ‘current.txt okunamıyor..’
end
image1=fread(fid);
image2=fscanf(fid2,‘%f’);
image11=reshape(image1,w,h);
image22=reshape(image2,w,h);
imshow(uint8(image22),[]);
figure,imshow(uint8(image22),[]);
Kullandığımız imgeyi herhangi bir klasore yazmak için imwrite komutunu kullanırız. sprintf komutu ile yazılacak klasorun yolunu ve imge nin hangi isimle ve uzantıyla yazılacağını ifade ederiz. Yazılabilecek dosya turlerine matlab ın help inden ulaşabilirsiniz.
%%%### imge kaydetme ###%%%
i=5;
adres=sprintf(’C:\\Documents and Settings\\alluser\\Desktop\\imgeisleme\\imge%3d.bmp’,i);
imwrite(uint8(imge),adres);
%%%%%%%%%%%%%%%%%%%%%%%%%%%