<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>atppp&#039;s Blog &#187; chdk</title>
	<atom:link href="http://blog.wuxinan.net/archives/tag/chdk/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.wuxinan.net</link>
	<description></description>
	<lastBuildDate>Tue, 08 Dec 2009 08:20:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>风起云涌图</title>
		<link>http://blog.wuxinan.net/archives/333</link>
		<comments>http://blog.wuxinan.net/archives/333#comments</comments>
		<pubDate>Wed, 19 Mar 2008 06:26:26 +0000</pubDate>
		<dc:creator>atppp</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[chdk]]></category>
		<category><![CDATA[photo]]></category>

		<guid isPermaLink="false">http://blog.wuxinan.net/archives/333</guid>
		<description><![CDATA[某人说，Blog 再不更新就长草了。我常常和某人说，Blog 就是有事写点，没事不用写。或者反过来也可以，有事忙了就不写，没事空了就写点。Blog 不是为了别人而写的，更不是为了留言和访问量而写的，Blog 是为了促进自己思考而写的。 这么一篇空洞无意义的文章实在是很浪费大家时间，于是我贴一张图吧。这是上周末在我阳台上拍的，定时每分钟一张，一共 29 张照片合成，动画速度是真实速度的一千倍。短短半个小时云行千里，请大家珍惜生命，远离博客，去看看大自然，哈哈。 技术信息：相机 Canon A570IS，使用 CHDK 脚本定时拍摄。土鳖低端相机也能用 Intervalometer，呵呵呵。]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.wuxinan.net/wp-content/uploads/2008/03/clouds.gif" alt="clouds.gif" style="margin: 0px 10px 10px 0px" align="left" />某人说，Blog 再不更新就长草了。我常常和某人说，Blog 就是有事写点，没事不用写。或者反过来也可以，有事忙了就不写，没事空了就写点。Blog 不是为了别人而写的，更不是为了留言和访问量而写的，Blog 是为了促进自己思考而写的。</p>
<p>这么一篇空洞无意义的文章实在是很浪费大家时间，于是我贴一张图吧。这是上周末在我阳台上拍的，定时每分钟一张，一共 29 张照片合成，动画速度是真实速度的一千倍。短短半个小时云行千里，请大家珍惜生命，远离博客，去看看大自然，哈哈。</p>
<p>技术信息：相机 Canon A570IS，使用 CHDK 脚本定时拍摄。土鳖低端相机也能用 Intervalometer，呵呵呵。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wuxinan.net/archives/333/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Defective Pixels in Canon A570 IS</title>
		<link>http://blog.wuxinan.net/archives/196</link>
		<comments>http://blog.wuxinan.net/archives/196#comments</comments>
		<pubDate>Mon, 26 Nov 2007 02:12:36 +0000</pubDate>
		<dc:creator>atppp</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[canon]]></category>
		<category><![CDATA[CCD]]></category>
		<category><![CDATA[chdk]]></category>
		<category><![CDATA[defective]]></category>
		<category><![CDATA[dng]]></category>
		<category><![CDATA[lang:en]]></category>
		<category><![CDATA[pixel]]></category>

		<guid isPermaLink="false">http://blog.wuxinan.net/archives/196</guid>
		<description><![CDATA[We know almost every pixel array (CCD sensor in camera, LCD screen, etc) has defective pixels. For camera CCD sensor, a few defective pixels can ruin good pictures, but we usually don&#8217;t see those pixels in the JPEG picture. Here&#8217;s a short story about those defective pixels. I installed CHDK on my Canon A570 IS [...]]]></description>
			<content:encoded><![CDATA[<p>We know almost every pixel array (CCD sensor in camera, LCD screen, etc) has defective pixels. For camera CCD sensor, a few defective pixels can ruin good pictures, but we usually don&#8217;t see those pixels in the JPEG picture. Here&#8217;s a short story about those defective pixels.</p>
<p>I installed CHDK on my Canon A570 IS camera and shot a few test pictures to find out defective pixels of my camera. To my surprise, this 7.1 mega-pixel CCD sensor has couple thousands defective pixels. The following picture represents the raw output from CCD sensor when I shot a 15 sec picture with ridiculously bright light source: (The green border is just showing image boundary, not from the actual picture.)</p>
<p><a title="0486.png" href="http://blog.wuxinan.net/wp-content/uploads/2007/11/0486.png"><img style="border: 3px solid #00ff00" src="http://blog.wuxinan.net/wp-content/uploads/2007/11/0486_small.png" alt="0486.png" /></a></p>
<p>The raw file is 3152 columns by 2340 rows, 10 bits per pixel, so the file size is 3152 x 2340 x 10 bits = 9219600 bytes. The first few columns and rows are used for background subtraction (masked pixels, their values are usually around 30-40 on this 2<sup>10</sup> = 1024 scale), so the active area is actually 3072 x 2304 pixels. The above picture is RAW CCD output down scaled to 0-255 and converted to 8-bit gray PNG (i.e., before demosaicing/gamma correction/any other process taken place). As you can see, there&#8217;re a lot (9205) of 0-valued defective pixels in the active area. There is no defective pixel in the masked area.</p>
<p>When I shot with faster shutter speed, I have less (2991) defective pixels.  The following was shot with 1/250 sec shutter speed, showing CCD value 0 as black (defective pixels), 1-40 as gray (masked pixels), and 40-267 as white. No pixel has value more than 267.</p>
<p><a title="0488.png" href="http://blog.wuxinan.net/wp-content/uploads/2007/11/0488.png"><img style="border: 3px solid #00ff00" src="http://blog.wuxinan.net/wp-content/uploads/2007/11/0488_small.png" alt="0488.png" /></a></p>
<p>I shot a lot of RAW pictures and found the number of  defective pixels is either 9205 or 2991. Generally speaking, the slower the shutter speed, the more chance I get 9205 defective pixels. But I did have 2991 defective pixels with 1/30 sec picture, and 9205 defective pixels with 1/250 sec picture, with all other settings the same. So I have no idea what determines the defective pixel pattern. Also what&#8217;s interesting is those 2991 defective pixels are subset of the 9205 defective pixels.</p>
<p>If I go ahead and demosaic, combining RGB channels together, This is part of the image I get: (You can see defective pixels in different color channels.)</p>
<p><img style="border: 3px solid #00ff00" src="http://blog.wuxinan.net/wp-content/uploads/2007/11/0405-with-bad-pixel-small.png" alt="0405-with-bad-pixel-small.png" /></p>
<p>Instead, most RAW format processors find those 0-valued (sub)pixels and interpolate over with neighbor pixels. By doing that, here&#8217;s what I get: (white balance etc. was tuned a little bit as well)</p>
<p><img style="border: 3px solid #00ff00" src="http://blog.wuxinan.net/wp-content/uploads/2007/11/0405-without-bad-pixel-small.png" alt="0405-without-bad-pixel-small.png" /></p>
<p>Nicely white, no annoying dots any more, right? This &#8220;cheating&#8221; process is done inside the camera when saving JPEG file, and also done in most RAW format conversion. <a href="http://www.adobe.com/products/dng/">DNG specification</a> states that:</p>
<blockquote><p>Defective pixels should be mapped out (interpolated over) before the raw data is stored as DNG.</p></blockquote>
<p>Enjoy your camera with 0.1% defective pixels!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wuxinan.net/archives/196/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Canon A570 IS 1.01A firmware dumped</title>
		<link>http://blog.wuxinan.net/archives/174</link>
		<comments>http://blog.wuxinan.net/archives/174#comments</comments>
		<pubDate>Sun, 11 Nov 2007 09:20:54 +0000</pubDate>
		<dc:creator>atppp</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[canon]]></category>
		<category><![CDATA[chdk]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[kxn]]></category>
		<category><![CDATA[lang:en]]></category>

		<guid isPermaLink="false">http://blog.wuxinan.net/archives/174</guid>
		<description><![CDATA[Today I dumped Canon PowerShot A570 IS 1.01A firmware using tricks from CHDK website. Here&#8217;s a little bit tech detail for my own record. Receiver: Thorlabs DET110 + 10k terminating resistor. Recording: 48 kHz sampling, 8 Bit, Mono. Delay settings I used: #define DELAY_SYNC 200 #define DELAY_SPACE 50 #define DELAY0 50 #define DELAY1 100 I [...]]]></description>
			<content:encoded><![CDATA[<p>Today I dumped Canon PowerShot A570 IS 1.01A firmware using tricks from <a href="http://chdk.wikia.com/wiki/Porting_the_CHDK">CHDK</a> website.  Here&#8217;s a little bit tech detail for my own record.</p>
<ul>
<li>Receiver: Thorlabs DET110 + 10k terminating resistor.</li>
<li>Recording: 48 kHz sampling, 8 Bit, Mono. Delay settings I used:
<pre>#define DELAY_SYNC   200
#define DELAY_SPACE  50
#define DELAY0       50
#define DELAY1       100</pre>
<p>I slowed down the blinking to make my sound card happy. However, the following faster setting:</p>
<pre>#define DELAY_SYNC   45
#define DELAY_SPACE  50
#define DELAY0       1
#define DELAY1       25</pre>
<p>does give very clean waveform (even with the shortest 5 us pulse) on the scope, so it should work with good sampling device (say a better sound card).</li>
<li>LED: I used the least-frequently-used blue LED
<pre>#define LED_BLUE 0xc02200c4</pre>
</li>
<li>Recording level set at about -5dB to -3dB</li>
<li>Decoder setting:
<pre>#define LEVEL_THRES_HI  0xa0
#define LEVEL_THRES_LO  0x80

#define LEN_SYNC        10
#define LEN_SPACE       1
#define LEN_0           3
#define LEN_1           6</pre>
</li>
<li>Total dump time is about 2.5 hours. (about 3700 bits per second)</li>
<li>I did not have any CRC error! I added an md5 checksum at the end. The camera took about 17 seconds to calculate md5sum of the 4MB firmware. Of course, no surprise, md5sum matches.</li>
<li>Starting part of the dump:<br />
<img src="http://blog.wuxinan.net/wp-content/uploads/2007/11/dump-start.png" alt="dump start" /><br />
Decoded as 00110000, 00110001, 00110010, in other words, ASCII &#8217;0&#8242;, &#8217;1&#8242;, &#8217;2&#8242;. Also, for some reason the waveform is inverted (compared with CHDK website), so I have to manually invert the waveform for adc.</li>
<li>The camera freezes about 3 milliseconds every few seconds. Here&#8217;s typical behavior:<br />
<img src="http://blog.wuxinan.net/wp-content/uploads/2007/11/typical-delay.png" alt="dump delay" /><br />
Since the protocol is decently robust, this extra delay is not a problem at all.</li>
<li>Dumper code available for download: <a title="a570is dumper" href="http://blog.wuxinan.net/wp-content/uploads/2007/11/a570is-101a-dumper.tgz">a570is dumper</a> (based on code from CHDK website and kxn&#8217;s modification.).</li>
</ul>
<p>Brilliant kxn ported <a href="http://blog.kangkang.org/wordpress/index.php/archives/180">CHDK to A570 IS 1.01A</a> within two days.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wuxinan.net/archives/174/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

