[Matlab] Read Multiple Images in a Folder

Hello guys,  in this occasion I would like to share about how to read multiple images in a folder, and save the information into array. This code is conducted by Matlab, that really approachable for graduate students (subjective opinion 😀 ) . I’ll present this code for my lovely friend Ratih, and perhaps is also helpful for you all, because this case is often happened when we talk about classification, clustering, information retrieval in image processing or computer vision.

Well, for instances I have a folder named “capturedImage” as shown in a figure below. In a folder contains 24 images (let’s say 24 different colors below are 24 images hehe..).

Screen Shot 2014-02-21 at 5.42.55 pm

Let’s read the information inside image into code that is described in a brief code below. In every line has its own narrative and may help you to understand what is the code indicate. I’ll take a case about how to get mean among intensities in every image, so I used data_mean to define collected information of all images in a folder through an array. Check this code out.

[code language=”matlab”]
% Cara ini digunakan untuk membaca gambar-gambar dalam satu folder
% dan kemudian meletakkkan nilai fitur gambar tersebut ke dalam sebuah
% array
% =====================================================================

clc
clear

gambar = ‘capturedImage/’; % nama folder "campturedImage"
% mengindetifikasi isi folder dalam file yang berekstensi .JPG
files = dir([gambar,’*.JPG’]);

m=struct2cell(files); % menentukan informasi gambar yang ada dalam folder
data_mean=[]; % inisialisasi awal array

for k=1:size(m,2)
file = [gambar m{1,k}]; % identifikasi nama file beserta path-nya
dataMean = mean(mean((file))) % menghitung mean dari masing-masing gambar
data_mean=[data_mean;dataMean]; % memasukkan data mean ke dalam array
end
[/code]

Ok, that’s all 🙂 As usual the open question to share is free welcome. Thank you and happy coding 🙂

[Java] Baca Teks dan Simpan ke dalam Array Dua Dimensi

Pagi-pagi sambil nge-air putih (minum air putih maksudnya) sambil menikmati dinginnya Surabaya yang tumben-tumbenan. Alhamdulillah :D. Postingan ini muncul karena terinspirasi dari seorang kawan baik nun jauh disana, yang juga sedang menimba ilmu di kampus seberang. Sebuah pertanyaan darinya hingga lahirlah postingan ini :D.  Baiklah kita sapa dulu Betha Nurina Sari :D. Salam #semangat pagi dari Surabaya :D.

Oke langsung aja, jadi diperkirakan ada sebuah kasus semacam demikian :

Screen Shot 2013-12-31 at 8.15.20 am

Gambar diaatas adalah sebuah file plain text, yang berisi informasi seperti diatas, yang tersimpan dalam file kamar.txt. Nah, sekarang bagaimana caranya agar informasi-informasi diatas dapat disimpan ke dalam sebuah tipe data array 2 dimensi ???. Oke kita rancang dulu kebutuhan yang digunakan untuk menyelesaikan permasalahan di atas. Kebutuhan yag dirinci dapat dibuat sebuah fungsi atau method untuk memudahkan kita dalam mengutak-atik code. Kata suhu-suhu istilah kerennya OOP (Object Oriented Programming).

  1. Fungsi baca file teks, return value Arraylist<String>. Disini nama fungsi-nya saya namakan readTeks, dengan input parameter berupa nama file teks.
  2. Fungsi untuk menyimpan  kata/item dari masing-masing baris, dengan menggunakan pemisah/delimiter spasi. Nama fungsi dinamakan token, dengan input parameter berupa String kalimat (anggap aja per baris itu sebuah kalimat 😀 *alibi bingung ngasih nama variabel) 😀 ).
  3. Fungsi untuk menyimpan semua informasi dalam bentuk array 2 dimensi. Disini saya namakan saveToArray.

Kurang lebih itu fungsi-funsgi yang dibutuhkan, sekarang mari saatnya kita menjahit. Nah dibawah ini kurang lebih jahitan saya.

[code language=”java”]
package TeksProcessing;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
*
* @author yuitaarumsari
*/
public class ReadTextSaveToArray {
public static ArrayList<String> readTeks(String bacateks) throws FileNotFoundException, IOException {
File bacafile = new File(bacateks);
FileReader inputDokumen = new FileReader(bacafile);
BufferedReader bufferBaca = new BufferedReader(inputDokumen);
StringBuffer content = new StringBuffer();
String barisData;
ArrayList<String> data = new ArrayList<String>();
while ((barisData = bufferBaca.readLine()) != null) {
content.append(barisData);
content.append(System.getProperty(“line.separator”));
data.add(barisData);
}
return data;
}

public static ArrayList<String> token(String kalimat) throws FileNotFoundException, IOException {
ArrayList<String> listKata = new ArrayList<String>();
StringTokenizer token = new StringTokenizer(kalimat, ” “);//pemisahan kata dengan delimiter spasi
while (token.hasMoreTokens()) {
listKata.add(token.nextToken());
}
return listKata;
}

public static String[][] saveToArray(ArrayList<String> input) throws FileNotFoundException, IOException{
String[][] data=new String[input.size()][4];
for (int i = 0; i < input.size(); i++) {
ArrayList<String> item=token(input.get(i));
for (int j = 0; j < item.size(); j++) {
data[i][j]=item.get(j);//memasukkan data ke dalam array
}
}
return data;
}

public static void main(String[] args) throws FileNotFoundException, IOException {
ArrayList<String> listData=readTeks(“kamar.txt”);
String[][] array=saveToArray(listData);
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+”\t”);
}
System.out.println(“”);
}
}

}
[/code]

Hasil program ketika dijalankan akan muncul seperti ini :

Screen Shot 2013-12-31 at 8.31.24 am

Okey, kurang lebih demikian pendapat dan cuap-cuap saya pada pagi ini. Sangat mungkin sekali masih ada banyak cara, selain cara yang saya gunakan, baik melihat dari sisi keefisienan, kompleksitas, dan efektifitas. So, discussions are welcomed :).

Well, terima kasih, semangat pagi, dan salam Java! 😀