2010-04-30

Reconfigure

>make confclean
>configure

2010-04-28

Profile of bash

One user
$HOME/.bash_profile
All users
/etc/profile

Qt Creator 1.3 doesn't Support Embedded Device Development

Does Qt Creator support embedded/mobile software development?

Answer:
For this initial launch, we focused on ensuring that Qt Creator supports desktop development. However, following the Qt Everywhere strategy, we plan to provide the functionality necessary for embedded/mobile software development. This functionality includes remote compilation and debugging tools as well as device deployment solutions. Our aim is to provide this functionality later in 2009.

Reference:
http://qt.nokia.com/developer/faqs/does-qt-creator-support-embedded-mobile-software-development?hotspoturl=http%3A//qt.nokia.com/developer/faqs

2010-04-21

What is DICOM?

DICOM stands for Digital Imaging and COmunications in Medicine. DICOM is a standard that defines two things about medical (image) data:
  1. What information is save in DICOM data and how they are organized?
  2. What kind process can be performed on DICOM data?
 ...to be continued

2010-04-16

C-arm Cone-beam CT


Reference:

Google PowerMeter: Visualization Makes Things Change

Goolge PowerMeter is a new product from Google, online monitoring power consumption of user's houses. With help of detail information of power usage, Google encourage people to more efficiently save energy. Some important features:

  • Devices should act as a web server. This features should be supported by device vendors.
  • With a device URL, user can view and manage the device by a internet browser.
  • Data is transmitted by HTTPS every 10 minutes.
  • Viewer of PowerMeter is integrated in iGoogle.
  • Google provides API for third-part developer.
"..Google recommends building an 802.11 ("WiFi") radio into your device and then implementing a TCP/IP stack with SSL aboard the device so that the device can transmit data directly to Google. The device could also use an RJ-45 ethernet jack with a TCP/IP/SSL stack, though this set-up could complicate your customer's efforts to configure the device's connection."



Reference:

Calibration for C-arm Reconstruction

Due to their open design and mechanical instability, C-arm imaging systems acquire projections along non-ideal scan trajectories. Volume reconstruction from C-arm projections requires a very precise knowledge of the imaging geometry. These knowledge can be gained by calibration.

"Fortunately, the C-arm motion is highly reproducible over a period of six months (Fahrig and Holdsworth 2000), and so the calibration can be done off-line with updating only needed about twice per year in clinical environments."

Calibration is a process to determine the transformation between 3D world coordinate and 2D image coordinate.
xw = P * xi
Here xw and xi homogenous coordincate of world system and image system. P is the projection matrix that need to be computed by calibration.

The calibration method can be off-line or on-line:
  • On-line calibration can real-time compute the projection matrix, but it requires more complicated image processing algorithm. Till now, online calibration is still under research in the academic community.
  • Off-line calibration is an standard approach in industry and clinic practices. A calibration phantoms of known geometry is used. 
"The measured 2D location of the spheres in the cone-beam projection together with their known 3D positions then allows us to obtain expressions for all calibration parameters."

Reference:

2010-04-15

Flash File System

Flash memory is widely used to hold a file system for an embedded device. The following is some facts about flash file system:
  • Flash has two types: NAND and NOR flash. NOR is expensive and allows random-access for reading, NAND is cheap and allows only page access.
  • Flash memory has finite number of erase/write cycles. >100K
  • Flash devices allow programming values from a “1” to a “0”, but not from “0” to a “1” value. To program values back to “1”s requires erasing a full block. The time taken to erase blocks can be significant. In most cases when data is edited it must be written to a new location in flash and the old data invalidated. (Wear levelling)
  • Flash file system types: JFFS2 and YAFFS.
  • Flash file system contains of both code and data. There are two ways to execute the code: Store and Download (SnD) and eXecute in Place (XiP).
SnD (upper) and XiP (lower)
References:

2010-04-14

2D-3D Registration

The typical application of 2D-3D registration is to align the real-time 2D fluoroscope frames with pre-operative 3D CT volume. The knowledge of 3D positioning is valuable information during surgical intervention.

Generally speaking, we need to estimate 4 quaternions parameters for rotation (with 3 degree of freedom)  3D pose estimation. Given a orientation, we compute the Digitally Reconstructed Radiograph (DRR) according to the rule of ray-casting and compare with Digital Video Fluoroscopy (DVF) by measure the similarity index. Several similarity indices are applied, for example, mutual information, normalized cross-correlation. The optimal parameter set is the one producing the largest similarity index. 

References:

Difference between SPECT and PET

 It's all about the isotopes they use.  PET uses positron emitters (F-18, C-11,...), this positron annihilates with an electron in the body of a patient and thereby creates two gamma-rays under an angle of 180°C.  The beautiful thing of PET are these two gamma-rays.  When two detectors (in the ring) detect a ray at the same line, you can draw a virtual line between them (180°C!!).  On the intersection of all the different "lines" lies your source of radiation.  This gives PET a good sensitivity and resolution and quantification possibilities.

A SPECT isotope (Tc-99m) emits one gamma ray, so reconstruction is more difficult, only rays that fall straight on the detector are detected (otherwise you won't know from which direction it came), so the camera has to rotate to make a full image.
I hope a made it more clear to you...
Reference:

2010-04-12

Setup Google App Email

Max cannot bear the poor service of Yahoo Small Business any more. One day, he decided to give up his web hosting at Yahoo and transfer his domain to www.namecheap.com to setup free google App Email.

Transfer domain to www.namecheap.com. Follow the steps of "Transfer Process". Two things are important related with your current registrar:
  1. You need to unlock your domain
  2. You need to input EPP Key (Authorization Key) of the domain.
1) Domain transfer: For Yahoo Small business, you can find both of them at "Domain control panel".  In the end, you will be informed by email to approve the transfer. The completion of transfer takes maxiaml 5 days.
According to ICANN's 'Policy on Transfer of Registrations between Registrars' (http://www.icann.org/en/transfers/policy-en.htm), losing registrar has 5 days to release the domain, from the moment they get transfer out notification.
2) Change DNS server: Use the DNS server of NameCheap. By select "Transfer DNS to NameCheap".
3) Create a Google App Standard edition using your domain. It is simple.
4) Verify the domain ownership.There are two ways:
  1. Change domain CNAME record 
Because Max has no webhost but only domain, he can only verify the ownership by changing CNAME record. At NameCheap, Select your domain->All Host Record. Set the subdomain record as screenshot:


5) Test: Open your webmail at "mail.mydomain.com" and try to send a email to yourself to check if it works.
6) Don't forget to cancel the service of your old privider. Try to get refund. Yahoo has 30-Day Satisfaction Guarantee.

Reference:

2010-04-11

Fluoroscopy and Image Intensifiers

If we want to define fluoroscopy in one sentence, we could say,
Fluoroscopy is a series of x-ray images recording along the time, namely x-ray video.
 Compared to the conventional x-ray imaging, fluoroscopy doesn't use film but a CCD video camera to record the projection. As a result, the "live" x-ray images can be played on a monitor.



The story about fluoroscopy has not yet been finished, we also need image intensifiers.

Due to the limited light produced from the fluorescent screens, early radiologists were required to sit in a darkened room, in which the procedure was to be performed, accustomizing their eyes to the dark and thereby increasing their sensitivity to the light.
Image intensifiers refer to a special component of the machine, which amplifies low intensity x-rays. This technique allow a radiologist to view the images on the monitor, not in darkened room any more.

Reference:

Perfusion CT

 Perfusion CT is a kind CT imaging for observation of micro-circulation of tissue, i.e, to see what's going on with blood flow in the organ. Prefusion CT imaging is a quatitative measurement with the unit ml/min/100g, i.e. ml blood per min flow through 100g tissue. Clearly perfusion CT measures the speed of blood flow among tissues. For example, normal cerebral perfusion is approximately 50 ml/min/100g to 60 ml/min/100. When perfusion falls below a threshold of approximately 20 ml/min/100g, cerebral metabolism is reversibly impaired.

Technically, perfusion CT is somehow similar like Digital Subtraction Angiography (DSA).
"All the techniques are based on the intravenous administration of iodine based CT contrast material and the fact that the change in attenuation due to this contrast material is directly proportional to the concentration of the contrast material."
In a plain text, physician take a baseline volume without contrast material at the begin. Then, they inject the contrast materiel, wait for a given time and scan the same location by a rapid CT again. Usually, people substrate the this volume with the baseline volume to enhance the change of attenuation caused by flow of contrast material. A rapid CT scanning technique is a precondition. Perfusion CT has been widely used for acute stroke and oncology.


Reference

Major CT Vendors

  • Siemens Healthcare
  • GE Healthcare
  • Philips (Brilliance series)
  • Toshiba Medical System

2010-04-10

Gating for CT

First of all, we must know a basic assumption of 3D-reconstruction: The algorithm assumes that the object should be always static during scanning. However, the human body is not a stone, even patients don't move, you cannot stop breathing or heart beating. If we directly use these ungated projection data, the motion artefact will exist in reconstructed volume.

ECG gating and respiratory gating is used to remove the artefact caused by cardiac and respiratory motions.

Take ECG gating as example. All projects are synchronized with ECG signals and classified into several groups according to different ECG phases. Then we reconstruct volume 1 by projections in phases 1, volume 2 by projections in phase 2, and so on. In a word, each volume is reconstructed by the project in the same phase and motion artefact is almost removed. Someone call gated it also 4-D CT, namely, volume1, volume2,...volume n, because they not only record spatial information, but also present the motion of organ along the time-axis.

Resolution Tool

Resolution depicts the ability of a system to image details of a given pattern. For example, a test bar phantom or resolution tool, as in figure, is used for CT measurement. The phantom composed of groups of parallel lines of different width. Each group is characterized by density of such line. The measurement unit is line pair per millimeter (lp/cc) or line pair per centimeter (lp/cm).

Helical CT and Multislice CT

Today, almost all CT scanners are helical CT. Different from previous conventional CT machines, a helical CT has x-ray source and detectors which are continuously rotate in a ring. The patient table slides the patient through the source-detector ring. The path of source and detector, respect to the patient, is a helix. And some people call it spiral CT .

The major improvement of helical CT, compared to old CT, is the rapid volumetric data acquisition. Later, the speed was further increased by multislice CT, which has a "thick" fan-beam and multiple parallel rows of detectors, typically, 16-slices or 64-slices.

2010-04-09

Mercurial is better than Subversion

Thanks for the artical of Joe (Subversion Re-education), Max is trying to summerize the superiority Mecurial over Subversion.

  1. Mecurial utilizes "changeset" to record all the changes on the data.  It makes merge from branch to trunk is much simpler in Mecurial.
  2. Mecurial is a distributed version controll system. Every user has his own private repository and feels free to check in his own changes without disturbing others.
Reference:

    Dvorak Simplified Keyboard

    Does anybody ever use this Dvorak keyboard or Dvorak layout?
    "... Dvorak & Dealey organized the letters and frequently-occurring punctuation so that the cumulative distance traveled by the 10 fingers when touch-typing typical English text is closer to the minimum than when touch-typing that same text via the dominant QWERTY layout... "


    Reference:

    Nice book: User Interface Design for Programmers

    For anybody decides to design GUI, you cannot miss this nice online book from Joe. User Interface Design For Programmers. I enjoyed the reading very much and copyed some good sentences:
    Controlling Your Environment Makes You Happy:UI is important because it affects the feelings, the emotions, and the mood of your users. If the UI is wrong and the user feels like they can't control your software, they literally won't be happy and they'll blame it on your software. If the UI is smart and things work the way the user expected them to work, they will be cheerful as they manage to accomplish small goals.
    Figuring Out What They Expected:A user interface is well-designed when the program behaves exactly how the user thought it would.
    Choices:Every time you provide an option, you're asking the user to make a decision. Design is the art of making choices.
    Affordances and Metaphors: Well-designed objects make it clear how they work just by looking at them.
    Consistency and Other Hobgoblins: Good UI designers use consistency intelligently, and, though it may not show off their creativity as well, in the long run it makes users happier.You can change the visual look of dialogs, a bit, but don't break the functionality.
    Designing for People Who Have Better Things To Do With Their Lives: 1)In fact, users don't read anything. 2)Users can't control the mouse very well. 3)Users can't remember anything
    Human aptitude tends towards the bell curve. Maybe 98% of your customers are smart enough to use a television set. About 70% of them can use Windows. 15% can use Linux. 1% can program. But only 0.1% of them can program in a language like C++. And only 0.01% of them can figure out Microsoft ATL programming.
    The effect of this sharp drop-off is that whenever you "lower the bar" by even a small amount, making your program, say, 10% easier to use, you dramatically increase the number of people who can use it, say, by 50%.
    The Process of Designing a Product: Activity based planning is even more important when you are working on version two of a product that people are already using. Here, it may be a matter of observing a sample of customers to see what they are using your program for.
    Reference:

    2010-04-07

    PowerVR SGX

     PowerVR SGX is a popular graphic core for various embedded device, which have nice graphic effects. For example, N900, iPad, iPhone.

    A lot of embedded devices and tablets have no nice graphic hardwares. for example, smart Q7/Q5. When you implement GUI for the embedded devices, you'd better to know whether your target board have sufficient graphic power to support your animation effects. Otherwise, you should implement some light text-based GUI solution.

    Reference:

    OpenCL in Qt

    "...For those new to it, OpenCL is an open, royalty-free standard for parallel programming in a heterogeneous computing environment. The most common use you’ve probably heard of is to run arbitrary C code on your system’s GPU..."


    "... It defines a new C-style language that is more precise as to mathematical precision, and which allows arbitrary arguments to be provided to an OpenCL function - known as a kernel - to do almost anything that C can do. Special vector types like “float4″ are provided as well as an extensive mathematical library.  But its most impressive feature is work sizes - it is very easy to split your task up into small chunks that the GPU can scatter across all of its compute units (compute units include whatever CPUs and GPUs OpenCL can find, OpenCL uses everything available).  Unlike regular C where you can spend a lot of time writing outer loops and launching worker threads for subparts of your problem, OpenCL does it for you. We’ll see how that works shortly..."


    Reference:

    2010-04-06

    Moblin and Maemo Merge to MeeGo

    Nokia and Intel have decided to merge their own OS, Maemo and Moblin, into a common Linux-based OS MeeGo. MeeGo is open source alternative to the iPhone App Store model.

    "..This partnership is notable not just for combining two different Linux platforms under one roof, but for its cross-platform support of both Intel and ARM chips, the latter currently popular in mobile devices like Apple's iPhone thanks to its low power consumption needs..."

    Reference:

    Use XQuery

    XQuery allows programmer to save the xml-query (or filter) into a seperated Python-like file, e.g
    for $time in doc("forecast.xml")//tabular/time
          return <time>
              { $time/@from }
              <temperature>
                  { $time/temperature/@value, $time/temperature/@unit }
              </temperature>
                 </time>
    

    A nice artical demonstrating the usage of XQuery is published in Qt Quaterly: Checking the Weather with XQuery(http://qt.nokia.com/developer/qtquarterly/checking-the-weather-with-xquery)

    Reference:

    2010-04-01

    Timers in Microcontrollers

    Timers are indispensable components of microcontroller. These timers are essentially counters that increment based on the clock cycle and the timer prescaler. When the limitation reaches (overflow), a interrupt will be generated. There are several different types timers:

    • watchdog timer, used to reset the controller if a hang of system or unexpected logical conditions occur.
    • 8 bit basic timer, upper limit is 255. Usually for general purpose
    • 16 bit timer, upper limit is 65535, used for PWM and capture/compare function, e.g RC acquisition.
    Every timer is configured with a clock source (internal or external) and prescaler. See the example at http://www.societyofrobots.com/programming_timers.shtml:

    Assume that Timer1 is set up with a prescaler of 8 on a MCU clocked at 20 MHz. Assume that a total of 6250 clicks were counted.

    then . . .

      delay (in ms) = (# ticks) * 4 * 8 * 1000 / (20000000)

      delay (in ms) = (6250) / 625 = 10 ms

    where
    • 4: in PIC16 and 18F families 1 instruction cycle = 4 crystal cycle
    • 8: prescaler number
    • 1000: unit in ms
    • 20000000: 20 MHz clock input

    Reference:

    Watchdog Timers

    ....To keep a watchdog timer from resetting your system, you've got to kick it regularly

    ....The hardware component of a watchdog is a counter that is set to a certain value and then counts down towards zero. It is the responsibility of the software to set the count to its original value often enough to ensure that it never reaches zero. If it does reach zero, it is assumed that the software has failed in some manner and the CPU is reset....


    Reference: