21 January 2014

Minneapolis trip-part3

Eager readers who have been holding their breaths for the third installment of my travelogue to Minneapolis can slowly relax their thoracic muscles. 
Here is the link for the previous part. For those, who are not very keen on reading the earlier parts; here is a brief summarisation of the entire plot. In 2007, I had a paper accepted in a major conference in my domain; so much so that I took the trouble to apply for a visa to the United Corporations of America, also known as the USA or US. Possessing of a very dutiful and obliging nature, first the visa chappie put my visa on hold for further checking and secondly he told me that since my paper contained terms like "surveillance", he was duty bound to send it for this check. The information, he did not volunteer by himself; but told me curtly on being asked by me, the reason for the extra checkup. I would like to think that he was startled on being interrogated in turn; as low lives from 3rd world countries do not usually ask but accept these as their the fruits of their karma. He was also kind enough to inform me that since the conference was approximately 35 or so days off; he had some hope that my background checking would be done within that time. Otherwise, it was chop chop. Be as it may; i thought that the money was not completely wasted. However, days passed and I got no information from them. I thought that the money was wasted after all. But about 3-4 days before the conference began, I got a call or an email; i forget now saying that my visa was granted and i had to go to the embassy and submit my passport for stamping. I was annoyed, because the time was really gone. This was a Friday, next 2 days were holidays. Monday would be the day to collect the visa, and on the same night I would have to catch a plane. Logistical nightmare. I had no prior experience of phoren travel; but i was aware of thousands of papers or formalities. I did not have much money either. Anyway all these difficulties and my great reluctance to rush off to places unknown at short notices, were somehow surmounted by some active support by family and I was duly seen off at the airport by kith and kin.
In the rushing around for tickets, visa stamping, clothes packing and so on; I had no time to book an accommodation in Minneapolis. The conference organisers had made some arrangements at the University of Minnesota campus; but the cutoff date was long past. I had made some searches for cheap stay in Minneapolis, and had saved the link for the Minneapolis youth hostel. We never know when some little action of ours can save our skin. At the Heathrow terminal, I paid a lot of money and luckily was able to see the Hound from Hell online. I pinged him and to his everlasting credit, he quickly booked a room at the Minneapolis youth hostel from the link I had saved. However, my money ran out and I was left with no address or phone number of the hostel; or not even the knowledge of if the booking had gone through. OK, I am not likely to win Nobel prize; I know that. I landed in Mineeapolis at 9PM local time. As I said, people vanished in thin air. An India, scampered away from me; seeing that I had nowhere to stay.

Now the current stuff of this blog post

I pondered. What do I do? I tried looking at the telephone directories in hope of finding the number from there but I could not find any. I could not believe that an airport could be so desolate. I thought that it might not be a good idea to dawdle around; might get caught for  interrogation and what not. I did have the address of the university accommodation with me; i thought i would try my luck there. Surely, they could not turn away an international student at 9PM. Next day, I would find something or the other. OK, I go to travel stand, and see lots of taxis. OK, again I admit that I am not a very bright spark; I should have taken a metro or bus for cheaper travel; but in the rush of leaving from India, i never did those homework. I went to the booth; showed the address and the lady there shook her head. Never knew the place. Not her mistake completely; I had taken the name of the lane inside the "campus". One or two taxi drivers were tried to help me but they had no clue either. One driver was more persistent than the other; and he dug out some more information from the lady based on what I told him(university accommodation/hostel etc.). We started off. I had no clue where the hostel was and was trusting the driver. In India, it is expected that the driver will cheat you, either by rigging the meter, or going by the most circuitous rout and other tricks of the trade. I had mentally assured myself that I would be ripped off, and would tell the driver when I reached the end of my money to let me off. I was completely wrong.  After sometime, the driver started asking questions, from where I was, why was i in america. He heard I was a student and said he too was trying to study and do something. He was from Somalia, so he said. All very matey but then I saw the meter at 30$ or so, and we were still travelling. I told him at a signal that I was not cash rich, and he could let me down if he thought we were close enough. It was more than 11PM. He was also having trouble getting to the exact location; he was roughly in the correct area. He told me not to worry and he would give me a discount; being a student himself he knew we were all hardpressed for money. Soon enough, we did reach the hostel; and as promised he said that he would have to take whatever was there on the meter. The discount was 3 or 5 $ which he said he would have normally charged he had to pay the airport chappies for parking his vehicle there. I told him that, he should take all his money, meter and this extra surcharge, but I would not be able to give anything as tips, and beseeched him not to mind. He was ok with the deal. I got down my luggage and he drove off, receiving my thanks and money. Now, with luggage i entered the hostel/dorm, and said I was conference attendee and would there be a room please. I had not made a booking but if there was a room, single or shared, i would be grateful. The counter was manned by a white chappie and a chinese girl. The WC said no room. I then tried the name of the co-author who had reached earlier, and could I speak with him or get some information about him? They checked the visitor list and obviously no luck. I got a bit amxious. I requested that any accommodation is fine; the reason for this mess was that I got granted the visa the day i had to leave. No luck. OK. If it is full, noone can do anything; not even for outstation student travellers with no friends or family. OK. I then requested the use of the computer system; I wanted to see my email and get the address of the youth hostel in case the booking had been done there. The WC said no; computer use only for guests. The CG looked uneasy. I got annoyed and told that this mess was because the visa was issued late and not fully due to my stupidity. No dice. Then, I told him that I would give my password and login for GMail and he could type, check the email and give me the address. No, said the WC. CG looked more uneasy, and the WC moved aside a bit for checking on on something. The CG took the opportunity to slide the keyboard a bit, and turn the monitor to my side and said in a low voice to type. I did not; i did not want to get the CG in trouble, and there was no guarantee that the WC would not get annoyed and call police or something. I ignored the CG; I hope she understood that I was not being rude to her. I appreciate her today also.
Then in my nastiest voice, I asked if i could look at a telephone directory at least. That was given; and i searched for the hostel. I only knew it began with Minneapolis. I did not know the full name. After one or two false tries; I got the number and spoke to the "manager". He confirmed my booking, and told me I was late. I said OK. Now, I did have the address and did not know how to go there. I asked the manager, and he said to take a cab. I asked how much would it cost; and he said about 10$, he also said he knew a cab company; and i said alright. Send it. I do not remember if I thanked thr WC for the use of the phone at least; i must have. I also do not recall if i thanked the CG. I do thank her now and again.
The driver was a white chap(I am not hung up on the colour of the skin, I am just narrating). The ride was short and it came to 7.5$. The driver put the 10$ note in his pocket and said thanks. I got down and retrieved my own luggage. I had shelter.

19 January 2014

Prof Casselles

Recently, I read about the demise of Prof. Vicent Casselles. It is very sad. I have of course skimmed through his papers; skimmed because his works are generally advanced than my poor knowledge will permit. In the early days of my phd work, while trying to understand geometric active contour models, I was going back reference after reference. I finally came across 3 papers or so of Prof. Vicent. The papers were quite old and I was not able to locate them online, and so emailed him, requesting a PDF. To my pleasant surprise, after a few days, I got a postal package not only containing those papers but a few others besides on the same topic, and a hand written note wishing the best. I have always felt thankful to him for taking this trouble.

huawei g300 failure and lesson: avoid like plague

i bought a huawei g300 about 5 months back; after going through a lot of reviews. I was not a smartphone fan; in fact I am more than happy with Nokia X2-02 and Samsung E2232.
I think it was bad karma which made me buy this stupid smartphone thingy, and that too from Huawei. The phone was a bit slow; expected because of limited memory. Apart from that, and very poor FM radio reception, the phone was ok. One morning, some day last week I woke to see the phone blanked out. I thought that maybe wifi had been left on, and the battery had drained out. I put the phone on charge, and tried to switch it on. No response from the phone. I let it charge for some more time, thinking that the phone had drained off completely. After sometime, the battery showed 10% in the battery icon itself; the phone was still not on. It was unusual; because usually by that duration battery is usually 30%. I removed the charger, pulled out the battery and put it back in and restarted. This time it went to 40%, I was satisfied and pressed the power button on top. The phone started; joy. But not so fast; it got stuck at the huawei logo. Internally, I felt that this was not good and something bad was happening. After multiple restarts, battery removals, the phone managed to go to the homescreen. But, no signal! It did not recognise any carrier. After lot of searches using Google; I saw that people in UK had suffered from the same problem; but some of them had the problem after the phone was unlocked from a carrier. In India, there is no such problem of tying to a carrier. So i thought that this was not my problem and tried to look for other reasons. At some point I did a complete wipe/factory reset; and lost all my apps as well. Some people had problems with "Airplane mode on"; i also had that icon creeping up occasionally. While the airplane icon was present; the great thing was that if I went to settings, the mode would be off.
After multplile and increasingly frustrating reboots, SIM changes; I saw that my IMEI number was unknown. It is baaaaad news. I had not rooted; not installed dodgy apps but my phone just dies on me! I sent an email outlining my frustration to the Huawei Indian website day before yesterday. Naturally, I got no response. Dodgy chinese company employing indians who on an average have no sense of pride in their work and have no self esteem being enslaved for millenia and now being low cost code monkeys; I do not expect anything from them.
I will have to travel 15 km to see if the phone can be salvaged by the service centre. Since there is warranty; I hope not to be charged any money. But I would rather junk the phone than pay a rupee to this junk company.

19 October 2013

Some papers of interest

Here I provide links for some papers and notes I have found interesting.

- Lindenbaum, M., Fischer, M. and Bruckstein, A.M., "ON GABOR'S CONTRIBUTION TO IMAGE ENHANCEMENT [pdf]", Pattern Recognition, Vol. 27/1, pp. 1-8, 1994. 

- Methods for non-linear least squares problem from IMM

- This is a very nice review of optic flow, at least in parts.


30 September 2012

Python code for non rigid registration using opencv and numpy

Here is a simple python code for registering two images. The transform is non-rigid. The error metric is sum of squared difference. Code is very simple, does not handle physical spacing. Main aim was to get hands dirty of numpy/scipy, python, opencv cv2 interface etc.
One practical tip for registration: if all else fails, smooth heavily the motion fields ;-)

##################################################
"""
Created on Sun Jan 15 10:41:19 2012

@author: vsk
"""
import sys, os, cv2, numpy, matplotlib, pylab
def SSD_Register(static_image, moving_image):
    IMG_BLUR = 11;
    ITER = 200;
    TIME_STEP = 0.00010;
    SMOOTH = 1.0;
    K_SIZE = 11;
   
    # Create float versions of all images
    registered_image = numpy.empty(static_image.shape, dtype=numpy.float32);  
    static_image_float = numpy.empty(static_image.shape, dtype=numpy.float32);
    mov_image_float = numpy.empty(static_image.shape, dtype=numpy.float32);

    for i in range(static_image.shape[0]):
        for j in range(static_image.shape[1]):
            static_image_float[i,j] = static_image[i,j];
            mov_image_float[i,j] = moving_image[i,j];
                       
    static_image_blur = cv2.GaussianBlur(static_image_float,(IMG_BLUR,IMG_BLUR), 1.20);
    mov_image_float = cv2.GaussianBlur(mov_image_float, (IMG_BLUR,IMG_BLUR), 1.20);
   
    difference_image = numpy.empty(static_image.shape, dtype = numpy.float32);
    # Space for motion field
    x_field = numpy.empty(static_image.shape, dtype=numpy.float32);
    y_field = numpy.empty(static_image.shape, dtype=numpy.float32);
    for i in range(x_field.shape[0]):
        for j in range(x_field.shape[1]):
            x_field[i,j] = j;
            y_field[i,j] = i;
           
    x_field_update = numpy.empty_like(x_field);
    y_field_update = numpy.empty_like(y_field);
    # Gradient image
    grad_x = numpy.empty_like(x_field_update);
    grad_y = numpy.empty_like(x_field_update);
   
    grad_x = cv2.Sobel(mov_image_float, cv2.CV_32FC1, 1, 0);
    grad_y = cv2.Sobel(mov_image_float, cv2.CV_32FC1, 0, 1);
    grad_x_resampled = numpy.copy(grad_x);
    grad_y_resampled = numpy.copy(grad_y);
    # registration iterations begin
   
    for i in range(x_field.shape[0]):
        for j in range(x_field.shape[1]):
            registered_image[i,j] = mov_image_float[i,j];
           
    difference_image = registered_image - static_image_float;
    print(numpy.sum(numpy.abs(difference_image))),
    ssd_err = numpy.zeros((ITER,1));
    for i in range(ITER):
    #    print i,
        difference_image = registered_image - static_image_float;
        #print(numpy.max(difference_image)),
        #print(numpy.min(difference_image))
    #    print(numpy.sum(numpy.abs(difference_image))),
        ssd_err[i]= numpy.sum(numpy.abs(difference_image));
        x_field_update = TIME_STEP*difference_image*grad_x_resampled;
        y_field_update = TIME_STEP*difference_image*grad_y_resampled;

        x_field_update = cv2.GaussianBlur(x_field_update, (K_SIZE, K_SIZE), 2.5);
        y_field_update = cv2.GaussianBlur(y_field_update, (K_SIZE, K_SIZE), 2.5);
    #    print(numpy.max(y_field_update))
        x_field = x_field - x_field_update;
        y_field = y_field - y_field_update;

        registered_image = cv2.remap(mov_image_float, x_field, y_field, cv2.INTER_CUBIC);
        grad_x_resampled = cv2.remap(grad_x, x_field, y_field, cv2.INTER_CUBIC);
        grad_y_resampled = cv2.remap(grad_y, x_field, y_field, cv2.INTER_CUBIC);
    print('')
    #pylab.imshow(registered_image); pylab.show(); pylab.gray()
    print(numpy.sum(numpy.abs(difference_image)))
    # display section
    display_image = numpy.copy(static_image);
    for i in range(x_field.shape[0]):
        for j in range(x_field.shape[1]):
            display_image[i,j] = registered_image[i,j];

#     cv2.namedWindow('Registered');
#     cv2.imshow("Registered", display_image);
#    
#     cv2.namedWindow('Final');
#     cv2.imshow("Final", moving_image);
#
#     cv2.namedWindow('Initial');
#     cv2.imshow("Initial", static_image);
#    
#     cv2.waitKey(-400)
#     cv2.destroyAllWindows();
#     pylab.plot(ssd_err)
#     pylab.show()
   
    pylab.subplot(131)
    pylab.imshow(static_image)
    frame = pylab.gca();
    frame.axes.get_xaxis().set_visible( False);
    frame.axes.get_yaxis().set_visible( False);
    pylab.title('Static Image');
   
    pylab.subplot(133)
    pylab.imshow(moving_image)
    frame = pylab.gca();
    frame.axes.get_xaxis().set_visible( False);
    frame.axes.get_yaxis().set_visible( False);
    pylab.title('Moving Image');
   
    pylab.subplot(132)
    pylab.imshow(registered_image),
    frame = pylab.gca();
    frame.axes.get_xaxis().set_visible( False);
    frame.axes.get_yaxis().set_visible( False);
    pylab.title('Registered Image');
   
    pylab.show()
    return (registered_image, ssd_err);
   
# ================  Read system arguments else generate images =================
if len(sys.argv) != 3:
    #print('Usage: static_image moving_image');
    static_im = numpy.zeros( (256, 256), dtype=numpy.ubyte);
    static_im[100:150, 100:150] = 100;

    x_field = numpy.empty(static_im.shape, dtype=numpy.float32);
    y_field = numpy.empty(static_im.shape, dtype=numpy.float32);
    for i in range(x_field.shape[0]):
        for j in range(x_field.shape[1]):
            x_field[i,j] = j + 12.00485;
            y_field[i,j] = i -  8.35;
   
    mov_im = numpy.zeros( (256, 256), dtype=numpy.ubyte);
    mov_im = cv2.remap(static_im, x_field, y_field, cv2.INTER_CUBIC);
    #mov_im[102:152, 100:150] = 100;
   
    SSD_Register(static_im, mov_im);  
else:
    static_image = cv2.imread(sys.argv[1], cv2.CV_LOAD_IMAGE_GRAYSCALE);
    moving_image = cv2.imread(sys.argv[2], cv2.CV_LOAD_IMAGE_GRAYSCALE)
    SSD_Register(static_image, moving_image)

10 February 2012

Regarding a trip to Puri temple

I have been meaning to write this since a long time, but never got around to do so. I visited the Jagannath Puri temple in 2008. It is 4 years now, but the visit remains extremely fresh in my mind. I had heard of crowds at Puri from relatives and friends before. The rudeness, greed and filthy language used by pandas was also indicated at. The advice given to me or rather us(since we were travelling in a group), was that avoid pandas at all costs, even if you have to listen to their entreaties which gradually become threats and end in abuse. This happens especially if there are females in the group, and fortunately or otherwise there was one in our group. As soon as we got down from the vehicle, we were surrounded. There was one guy who said who promised to take a sum which for his guidance. We made it clear that we are not interested in making some special puja(specially priced, if one may add). He agreed but obviously after entering premises, he said that prasad needs to be "bought", else visit is not possible. Needless to say, though we were not interested and wanted to get rid of him, the female of the group, who got a bit emotional with all the flowery language, agreed to buy some 150/- "basket". The puja coupon counter is another mess, manned by a fat scoundrel. Be as it may, after waiting for quite sometime, in which the scoundrel rudely asked the lady to pipe down, the panda came back with a basket. After entering the main temple, he asked each of us to put money as it was some custom. At this point we had enough and asked him to go away, which he did after muttering many things unpleasant. As I was moving along the queue for darshan, the panda thief inside, waved a large basket in front of me and shouted or demanded to put something inside. I said nothing but contented by just glaring at him. He kind of piped down. All in all, it was a filthy experience. 
It is sad that a temple and a holy place, where thousands come to pray, seek mental peace, succour, and relief, give their thanks, are treated so shabbily, abused, shoved and made to undergo such pain. Also, it is all the more surprising because the Puri temple's administrative board has some King as a member. Clearly, someone is snoozing. It is high time that the pandas be given the same treatment as thugees were given by the British. One may think that I am over-reacting, but I have decided not enter the temple again until I hear that things have improved. The pandas should realise that they are playing with fire in treating the devotees in this fashion. It is sad that no one is Odisha is interested in improving the situation.

Mahabhoj

मन्नू भंडारी द्वारा लिखित "महाभोज" पढ़ रहा हूँ। बहुत मोटी किताब नहीं है। कहानी का विषय है राजनीति। सारांश कुछ ऐसी है। किसी एक छोटे से गाँव में एक हरिजन समाजसेवक का लाश मिलने पर सरकार और विपक्षी नेता, दोनों इस "मौके" का फायदा उठाना चाहते हैं। कारण है कि इस घटना के कुछ ही दिनों बाद चुनाव है। वैसे तो है मामूली चुनाव लेकिन विपक्षी नेता इसी से अपना "नव निर्माण" करना चाहते हैं, और ये भी स्वाभाविक है की सरकारी दल, जिसमे कुछ नेता असंतुष्ट हैं,  इतनी आसानी से हारने वाली नहीं है। अब तक तो आधी ही पढ़ी है, लेकिन इतना तो समझ में आ ही गया है कि चुनाव में कोई भी जीते, असली में हारने वाले तो गाँव वाले ही हैं। इसलिए कह रहा हूँ कि कहानी बहुत ही सहज और स्वाभाविक रूप में लिखी गयी है। विभिन्न नेताओं का ऐसा सहज चरित्रांकन, बिना एक शब्द व्यर्थ किये, बहुत अच्छा लगा। ऐसा नहीं लगता है कि ये कोई कहानी है, बल्कि राजनीती के भीतरी एवं बाहरी चालबाज़ी का आँखों देखा हाल है।
खरीदिये और पढ़िए!

14 January 2012

Sony Ericsson Elm quick review

This is a quick review of the Sony Elm mobile cellphone.
Motivation and Decision!
The reason for the purchase was that I was looking for a cellphone within Rs. 8,000-10,000, with reasonable camera performance. I was tempted by LG and especially Samsung offerings. Since I have a very positive experience with Samsung E2232, I had decided upon Samsung Galaxy Y, which is a cheaper version of the more pricey ones of the same name. I was not specifically looking for Android phones or touchscreen phones. I am slightly wary of the touchscreen technology coming at too low a price; I guess that any company has to maintain its margin and will cut down on quality if pushed too hard. Now, all the reviews for Samsung were great except for a few which said that the camera was barely passable. I was also not looking for high megapixel, 3 would be more than enough. Sadly, moronic customers push the companies toward megapixel wars leading to degradation of images, or maybe the companies attract morons by such number games. However, I hesitated after reading the poor quality images. Then, I chanced upon the Sony Ericsson Elm. On  paper it seemed great; a Sony Ericsson product with decent reviews. I also saw some sample images at a website. Seemed reasonable to me for a phone costing 8000 or so. So I bought it.

General Comments
As far as looks go, this is fairly good. It is very conventional, no scratching or touching anywhere. The keypads are good, I played some games(pre-loaded) without worrying about damaging the pad. I would say that, this is about the only thing which I have positive to say about this overpriced brick. The phone itself is very slow. I never thought I would pay much attention to the themes, but the utter dullness and the available themes is galling. The sound quality is miserable, or to be honest maybe i expected better, since i was not paying for touchscreen and Android, I thought that I was getting better hardware.
Photos!
Ah, this is what I bought the phone for?! 

No, certainly not! This is bright sunshine! The hopeless quality is immediately apparent. Based on this short experience of 1 week, I think that I made a wrong choice. My general suggestion is that if you want a camera, buy one and if you want a phone, buy one with such features as you wish. Do not mix and match both, at least not for anything costing less than 25,000. At that price or a bit more, you may get an entry level DSLR nowadays. However, if you do feel like donating money by spending it on such a combo, while I do not know which to recommend, I most certainly which NOT to go for: Sony Ericsson Elm!

30 October 2011

Samsung E2232 Mobile phone review

This is the probably the second time I am writing a review for an electronic product. There were not a lot of reviews for this particular model when I was looking for reviews. I was looking for a phone <= 2500 INR, with dual SIM, Music player and FM radio. Camera was optional. I considered some equivalent Nokia models Nokia X1-01, I went to a shop and the body was was not very good. The keypads felt a bit annoying. Another option was Nokia C1-02, the quality is also not to my expectation. Keypad takes a hit. So, I bought this E2232 because of the almost feature for feature match with Nokia C1-02, including poor camera quality! I got E2232+2GB microSD card for 2400/- in Bangalore, 10 or so days back(pre-Diwali Saturday). The Nokia phone itself was more expensive; card would cost more pushing the expenditure to 2700 or so.

In the package, I got: handset, charger, headphone and battery. 2GB was from shop's side. Pluses of E2232 in my opinion after some usage:
  • Bluetooth, FM radio, Music player, all there
  • Menu is quite ok, this is my first dual SIM phone. using both the SIMS and configuring them is a breeze. One can associate a profile with each SIM. That means one can have spearate ringtone, colour, theme etc for each SIM. All the contacts appear together in the address book; I see this as an advantage. For identification, each contact is marked with the respective SIM icon.
  • There is a separate button for the music player. I did not think this to be a big deal initially, but i can see that this is an advantage. As FM does not have dedicated button, I have to traverse a bit of the menu to change settings(channel, volume, recording).
  • Recording from FM, I recorded a nice violin piece which was being broadcast on AIR Sangeet Sammelan. Recording is fine. 
  • It comes with few Indian languages: Hindi, Tamil, Kannada and possibly Telugu, apart from English. I have not tested any of these.
As the world is not an idea place, there are a few minuses as well for this product.
  • my biggest grouse is the body quality, especially the back portion. It comes out with minor falls. You might ask if this is worse than the above mentioned Nokias; probably not. I noticed this only when the phone took a fall; the back and battery came out. I had to reset the timing and date again. Very annoying and anxiety inducing.
  • Average battery? Now I am not sure about this because my earlier phone was Motorola model, bought maybe 4+ years back. The battery is incredible, it has taken falls and also direct throws to the ground. It may need a steel tipped bullet to destroy this thing. Compared to that, the E2232 is a energy sucker. Since this was newly bought, I was using the music or radio or Bluetooth transfer very heavily. 
  • Extremely poor camera, but I do not mind. It was expected. I wish they removed the camera and put that money into the body. My planned use for the camera is to photograph the (principally IT) monkeys on bikes who ride on the pavement, to cleverly evade traffic, and upload to some photosharing website. Maybe, it might sear their thick hides and might stop doing it. But that is an aside.
  • Suspect keyboard; it kind of feels flimsy but let us see how it lasts. I am not a heavy SMS user.
  • Pathetic quality of the headphone/earphone set. Now, again one cant buy everything at 2200 or so, but this earpiece is junk. It keeps on slipping, or so it feels. Maybe Koreans have smaller ears(no joke/racism), but to me I have to keep my head like the lady in the clip to keep the earphone from slipping. Planning to get a headphone set cover the ear. Again, I wish the camera gets removed and something gets added here.
More as I use more. A sample pic will be posted presently.
Go for this phone after verifying Nokia's build is worse; otherwise this is fine(for the time being).
27/11/2011
Photo as promised. Although  taken in indoor condition under normal condition, the quality is hopeless. What more for 2250/-....


14 November 2010