Tuesday, December 29, 2009

OpenCV & Python: Simple Image Operations

Here's a short example showing how to use openCV with Python.It reads an image from a file, displays the image, the Harris corner detector on that image and the Canny edge image:
(save this in a file named tmp.py and run with: python tmp.py )



http://pythonimage.blogspot.com/2009/04/opencv-example.html



import Image
import os
import sys
from opencv.cv import *
from opencv.highgui import *

def analyzeImage(f,name):

  im=Image.open(f)
  try:
    if(im.size[0]==1 or im.size[1]==1):
      return

    print (name+' : '+str(im.size[0])+','+ str(im.size[1]))
    le=1
    if(type(im.getpixel((0,0)))==type((1,2))):
      le=len(im.getpixel((0,0)))

    gray = cvCreateImage (cvSize (im.size[0], im.size[1]), 8, 1)
    edge1 = cvCreateImage (cvSize (im.size[0], im.size[1]), 32, 1)
    edge2 = cvCreateImage (cvSize (im.size[0], im.size[1]), 8, 1)
    edge3 = cvCreateImage (cvSize (im.size[0], im.size[1]), 32, 3)

    for h in range(im.size[1]):
      for w in range(im.size[0]):
        p=im.getpixel((w,h))
        if(type(p)==type(1)):
          gray[h][w] = im.getpixel((w,h))
        else:
          gray[h][w] = im.getpixel((w,h))[0]

    cvCornerHarris(gray,edge1,5,5,0.1)
    cvCanny(gray,edge2,20,100)

    cvNamedWindow("win")
    cvShowImage("win", gray);
    cvNamedWindow("win2")
    cvShowImage("win2", edge1);
    cvNamedWindow("win3")
    cvShowImage("win3", edge2);

    cvWaitKey()

    f.close()

  except Exception,e:
    print e
    print 'ERROR: problem handling '+ name


f = open(sys.argv[1],'r')
analyzeImage(f,sys.argv[1])

Python & OpenCV: How to crop images

cropped = cvCreateImage( cvSize(new_width, new_height), 8, 3)
src_region = cvGetSubRect(image, opencv.cvRect(left, top, new_width, new_height) )
cvCopy(src_region, cropped)

Reference:

Friday, December 18, 2009

Unit Pemprosesan Pusat

Ini gambar salah satu mikrokontroller yang murah dan kecil: AVR 8212.


Untuk menggunakan, kita diberi rajah blok berikut.




Rajah ini boleh dikatakan antara yang termudah. Banyak lagi rajah yang lebih rumit.

Sebenarnya, apakah yang terpenting dari banyak2 komponen tu? Hanya 3.

  • Daftar (register) - untuk menyimpan data
  • ALU (arithmetic/logic unit) - untuk melakukan operasi aritmetik dan logik
  • Litar kawalan (control circuits) - mengawal operasi cip



Untuk membina suatu sistem, perlu juga ditambah litar jam dsb.

Dari CPU, terdapat 3 "bas" yang berhubung dengan komponen2 lain.

  • Bas alamat (address bus) - mengandungi kod yang memilih peranti yang berinteraksi dengan CPU
  • Bas data (data bus) - laluan bagi data masuk/keluar CPU
  • Bas kawalan (control bus) - isyarat2 yang tidak termasuk dua bas sebelumnya. Berfungsi untuk mengawal peranti2 dan membawa kod mengenai status peranti2.



Akan datang: Fungsi komponen-komponen dalam CPU.

Monday, December 14, 2009

Mikropengawal (µC) atau Mikropemproses (µP)?

Mikropengawal (microcontoller atau µC) berbeza dari mikropemproses (microprocessor atau µP).

Ciri utama µC ialah kepelbagaian fungsi periferal dan memori dalam satu cip. Ini mengurangkan jumlah komponen dalam sistem, menjimatkan kos dan meningkatkan reliabiliti sistem.

µP seperti Intel Core i7 dalam PC hanya mengandungi unit pemprosesan pusat (central processing unit atau CPU). Mikropemproses tidak mempunyai memori, fungsi input/output seperti liang selari dsb yang diperlukan untuk membina satu sistem komputer lengkap. µP direka untuk menyediakan fungsi aritmetik dan logik pada tahap paling laju. Komponen lain disediakan oleh cip dan peranti luaran. Ini membolehkan µP disesuaikan dengan pelbagai keperluan pengguna PC.




Apabila melihat µC, kita akan perhatikan bahawa ia mengandungi memori, liang selari, jam, dan banyak fungsi periferal yang tidak terdapat pada µP. µC selalunya digunakan dalam produk terbenam seperti ketuhar gelombang mikro, pengawal enjin kereta, telefon bimbit dsb. Rekabentuk dan pengaturcaraan bagi produk sedemikian adalah bidang khusus yang dikenali sebagai reka bentuk terbenam (embedded design).




Perbezaan lain antara µC dan µP ialah µC direka untuk satu fungsi saja manakala µP boleh diprogram untuk melakukan apa saja yang diingini oleh pengguna. Kebiasaannya µC terletak dalam satu peralatan lain, dan pengguna tidak perlu dan tidak boleh menukar fungsi peralatan tersebut. Contonya µC yang mengawal ABS pada kereta hanya boleh melakukan tugas itu sahaja. Sebarang perubahan pada program sebenarnya akan mengundang bahaya.

Sunday, December 13, 2009

Apa itu "Sistem Terbenam"?

Sistem terbenam atau embedded system ialah litar komputer yang tidak kelihatan seperti komputer. Macam tak caya kan? Sebenarnya benda ni dah banyak kita gunakan. Siapa tak pakai handphone? Itulah dia contoh sistem terbenam. Dalamnya ada litar komputer lengkap: mikropemproses, memori dan input/output.

Nak tau apa mikropemproses dalam handphone? Lebih 90% handphone menggunakan mikropemproses berjenama ARM. Bukan lengan. Bukan senjata. ARM. Asalnya dari perkataan Acorn RISC Machine. So ARM ni suatu akronim yang di dalamnya ada satu lagi akronim: RISC. RISC ni pulak maknanya Reduced Instruction Set Computer. Berbelit-belit kan?

Anyway, ARM ni syarikat yang tak buat cip. Kalau kopak handphone tu, tak jumpa cip berlogo ARM. ARM ni jual design dia kat orang lain. So cip ni mungkin berlabel Philips, Motorola, Broadcomm, Marvel, Samsung, Oki, bla bla...

Cip NXP LPC24xx mengandungi pemproses ARM.

Pe-pe hal, konfirm dalam handphone ada komputer sebab nama cip pun ada perkataan komputer. Silap-silap dalam handphone bukan ada satu tapi lebih mikropemproses. Macam iPhone.

Apa lagi contoh sistem terbenam? Fuuh kalau nak disenaraikan, panjaang sebab semua benda yang ada mikropemproses dah boleh dikira sistem terbenam. Kat sini ada sikit:

Kat rumah:
  • MyKad: ya ya di dalamnya ada mikropemproses
  • Pemain MP3 macam iPod
  • Pemain DVD
  • TV tak kira jenis LCD atau CRT
  • Kamera digital
  • Lensa kamera DSLR
  • DSL modem
  • Mouse
  • Keyboard
  • Remote controller: ada mikropemproses kecik di dalamnya
  • Thumb drive/Pen drive/USB key
  • Printer
  • Banyak permainan
  • Ketuhar gelombang mikro (nama berbelit untuk microwave)
  • Mesin basuh yang agak moden sikit
  • Air-con yang agak moden sikit
Kat kereta (bergantung kecanggihan, boleh ada 20 ke 80 mikropengawal dalam kereta):
  • Engine control unit (ECU)
  • Radio kereta: kalau jenis yang muka depannya boleh tanggal, muka depannya ada satu mikropemproses asing
  • Anti-lock braking system (ABS)
  • Automatic transmission
  • Cruise control
  • Air-con
  • GPS
  • Banyak lagi, katanya lebih 50 biji mikropemproses setiap kereta
Aplikasi military:
  • Peluru berpandu (missile). Orang Indon kata "rudal".
  • Radar
  • Sonar
  • Radio
  • Sistem navigasi
Cukuplah dulu.

Kereta ini sistem terbenam? Atau di dalamnya terbenam sistem terbenam?