<?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>Personal &#8211; semifluid.com</title>
	<atom:link href="/category/personal/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>Intermediate in flow properties between solids and liquids; highly viscous.</description>
	<lastBuildDate>Thu, 31 May 2018 17:28:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>Raspberry Pi Camera Comparison</title>
		<link>/2017/01/23/raspberry-pi-camera-comparison/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Mon, 23 Jan 2017 14:46:36 +0000</pubDate>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">/?p=5916</guid>

					<description><![CDATA[I use a number of Raspberry Pi 3 Model B ARM-based Linux computers to help simplify my day-to-day life. Because I live in an urban area, I have been interested in setting up a security camera that could alert me to any issues that might arise when I&#8217;m not in the house. Most recent Raspberry [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I use a number of <a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-b/">Raspberry Pi 3 Model B</a> ARM-based Linux computers to help simplify my day-to-day life. Because I live in an urban area, I have been interested in setting up a security camera that could alert me to any issues that might arise when I&#8217;m not in the house. Most recent Raspberry Pis also include a <a href="https://en.wikipedia.org/wiki/Camera_Serial_Interface">CSI</a> connector, meaning that it is easy to connect a high-resolution camera that can be easily accessed via <a href="https://picamera.readthedocs.io/">python</a> or via <a href="https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md">bash</a>. This would also be helpful for any other computer vision setup, including <a href="http://octoprint.org/">OctoPrint</a>. Since the <a href="http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/">Raspberry Pi runs OpenCV</a>, I can use open source computer vision source code to quick and easily setup a security system. The first step is selecting a camera.</p>
<p>I plan on using a <a href="http://amzn.to/2jH3h5K">Raspberry Pi 3</a> or <a href="http://amzn.to/2iq8YDZ">Raspberry Pi Zero v1.3 (with camera connector)</a> as the base machine. However, there are a number of 3rd party cameras available. As is often the case, I was not able to find a comparison of the options available online, so today I am going to do a quick and dirty look at the following cameras:</p>
<table  class=" table table-hover" >
<thead>
<tr>
<th>Model</th>
<th>Chipset</th>
<th>Megapixels</th>
<th>Advertised FOV</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="http://amzn.to/2iqbMRo" title="Raspberry Pi Camera">Raspberry Pi Camera</a></td>
<td>OV5647</td>
<td>5MP</td>
<td>54° (h) x 41° (v)</td>
</tr>
<tr>
<td><a href="http://amzn.to/2jGTeO6" title="Raspberry Pi v2 Camera">Raspberry Pi v2 Camera</a></td>
<td>IMX219</td>
<td>8MP</td>
<td>62.2° (h) x 48.8° (v)</td>
</tr>
<tr>
<td><a href="http://amzn.to/2jGSRmj" title="Arducam 5MP Camera">Arducam 5MP RPi Camera</a></td>
<td>OV5647</td>
<td>5MP</td>
<td>54° (h) x 41° (v)</td>
</tr>
<tr>
<td><a href="http://amzn.to/2jGUktd" title="Waveshare RPi Camera (I)">Waveshare RPi Camera (I)</a></td>
<td>OV5647</td>
<td>5MP</td>
<td>170°</td>
</tr>
<tr>
<td><a href="http://amzn.to/2jGYrW9" title="Waveshare RPi Camera (J)">Waveshare RPi Camera (J)</a></td>
<td>OV5647</td>
<td>5MP</td>
<td>222°</td>
</tr>
<tr>
<td><a href="http://amzn.to/2jGZnK2" title="Waveshare RPi Camera IR-CUT">Waveshare RPi Camera IR-CUT</a></td>
<td>OV5647</td>
<td>5MP</td>
<td>75.7°</td>
</tr>
</tbody>
</table>
<p><a href="/wp-content/uploads/2017/01/rpi-cameras-in-a-row.jpg"><img fetchpriority="high" decoding="async" src="/wp-content/uploads/2017/01/rpi-cameras-in-a-row-1024x557.jpg" alt="" width="648" height="352" class="aligncenter size-large wp-image-6008" srcset="/wp-content/uploads/2017/01/rpi-cameras-in-a-row-1024x557.jpg 1024w, /wp-content/uploads/2017/01/rpi-cameras-in-a-row-300x163.jpg 300w, /wp-content/uploads/2017/01/rpi-cameras-in-a-row-768x418.jpg 768w" sizes="(max-width: 648px) 100vw, 648px" /></a></p>
<p>In this post, I provide some demonstration photos for outdoor, indoor, and low-light scenarios for the modules.</p>
<p><span id="more-5916"></span></p>
<p>The basic testing rig uses a <a href="http://amzn.to/2jH3h5K">Raspberry Pi 3</a> as the processor. I mounted the cameras onto a piece of cardboard so that they would have roughly the same origin and orientation. Images were captured through an SSH connection to my laptop and transferred via <a href="http://www.hypexr.org/linux_scp_help.php"><code>scp</code></a>. Finally, I strapped on a portable battery (<a href="https://www.amazon.com/gp/product/B00SSY1AJU">AUKEY 12000mAh powerbank</a>) and the entire setup was portable. Since this is a headless machine, I streamed video from the Raspberry Pi to my laptop with the <a href="http://www.linux-projects.org/uv4l/tutorials/rtsp-server/">UV4L</a> package to make sure that the image was sharp, especially for the Waveshare cameras, which required some focusing. Here&#8217;s a photo of the &#8220;test setup&#8221;:</p>
<p><a href="/wp-content/uploads/2017/01/rpi-cameras-setup.jpg"><img decoding="async" src="/wp-content/uploads/2017/01/rpi-cameras-setup-1024x599.jpg" alt="" width="648" height="379" class="aligncenter size-large wp-image-6009" srcset="/wp-content/uploads/2017/01/rpi-cameras-setup-1024x599.jpg 1024w, /wp-content/uploads/2017/01/rpi-cameras-setup-300x176.jpg 300w, /wp-content/uploads/2017/01/rpi-cameras-setup-768x449.jpg 768w, /wp-content/uploads/2017/01/rpi-cameras-setup.jpg 1993w" sizes="(max-width: 648px) 100vw, 648px" /></a></p>
<p>Each module has different specifications and features, so it&#8217;s worthwhile to weigh the pros and cons when choosing one for your application. All of the modules are effectively plug-and-play with the CSI connector; however, the <a href="http://amzn.to/2jGZnK2" title="Waveshare RPi Camera IR-CUT">Waveshare RPi Camera IR-CUT</a> also has a neat feature where the LED signal toggles a mechanical IR filter. This means that with some creative coding, you can use it as a day and night camera (it even includes high power IR LEDs, which I did not include in the comparison shots). However, the image quality is a bit worse and the IR filter is not terribly effective (meaning colors are washed-out in daytime shots).</p>
<p>All photos were taken with:</p>
<pre><code>raspistill -o photo.jpg --vflip --hflip
</code></pre>
<p>Here are all of photos in a mosaic for quick comparison:</p>
<p><a href="/wp-content/uploads/2017/01/semifluid.com-camera-comparison.jpg"><img decoding="async" src="/wp-content/uploads/2017/01/semifluid.com-camera-comparison-1024x635.jpg" alt="" width="648" height="402" class="aligncenter size-large wp-image-6007" srcset="/wp-content/uploads/2017/01/semifluid.com-camera-comparison-1024x635.jpg 1024w, /wp-content/uploads/2017/01/semifluid.com-camera-comparison-300x186.jpg 300w, /wp-content/uploads/2017/01/semifluid.com-camera-comparison-768x476.jpg 768w" sizes="(max-width: 648px) 100vw, 648px" /></a></p>
<p>Image quality for the <a href="http://amzn.to/2iqbMRo" title="Raspberry Pi Camera">Raspberry Pi Camera</a> and the <a href="http://amzn.to/2jGSRmj" title="Arducam 5MP Camera">Arducam 5MP RPi Camera</a> were practically identical, which would be expected since they share the same sensor and lens setup. The <a href="http://amzn.to/2jGZnK2" title="Waveshare RPi Camera IR-CUT">Waveshare RPi Camera IR-CUT</a> was disappointing and even after dialing in the focus there were still regions that were blurry when the IR filter was enabled. I really liked the field-of-view for the <a href="http://amzn.to/2jGUktd" title="Waveshare RPi Camera (I)">Waveshare RPi Camera (I)</a> and <a href="http://amzn.to/2jGYrW9" title="Waveshare RPi Camera (J)">Waveshare RPi Camera (J)</a> and the image was quite sharp once the focus was adjusted. These would be ideal cameras for a home security solution. The <a href="http://amzn.to/2jGTeO6" title="Raspberry Pi v2 Camera">Raspberry Pi v2 Camera</a> performance was anti-climactic. Its dynamic range appears to be a bit wider, but it would often under-expose photos. This could probably be corrected by adjusting the parameters in <code>raspistill</code>.  Bang for buck, the <a href="http://amzn.to/2jGSRmj" title="Arducam 5MP Camera">Arducam 5MP RPi Camera</a> is best, but for shear field-of-view, the <a href="http://amzn.to/2jGYrW9" title="Waveshare RPi Camera (J)">Waveshare RPi Camera (J)</a> is pretty awesome.</p>
<p>And here are the full-resolution shots in each of the situations:</p>
<h3>Outdoor (day)</h3>
<table  class=" table table-hover" >
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_day_rpi.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_day_rpi-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5998" srcset="/wp-content/uploads/2017/01/cam_day_rpi-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_day_rpi-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_day_rpi-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Raspberry Pi Camera</td>
<td><a href="/wp-content/uploads/2017/01/cam_day_arducam.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_day_arducam-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5997" srcset="/wp-content/uploads/2017/01/cam_day_arducam-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_day_arducam-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_day_arducam-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Arducam 5MP RPi Camera</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_day_waveshare_ir.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_day_waveshare_ir-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-6001" srcset="/wp-content/uploads/2017/01/cam_day_waveshare_ir-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_day_waveshare_ir-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_day_waveshare_ir-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (on)</td>
<td><a href="/wp-content/uploads/2017/01/cam_day_waveshare_iroff.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_day_waveshare_iroff-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-6002" srcset="/wp-content/uploads/2017/01/cam_day_waveshare_iroff-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_day_waveshare_iroff-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_day_waveshare_iroff-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (off)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_day_waveshare_i.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_day_waveshare_i-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-6000" srcset="/wp-content/uploads/2017/01/cam_day_waveshare_i-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_day_waveshare_i-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_day_waveshare_i-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (I)</td>
<td><a href="/wp-content/uploads/2017/01/cam_day_waveshare_j.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_day_waveshare_j-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-6003" srcset="/wp-content/uploads/2017/01/cam_day_waveshare_j-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_day_waveshare_j-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_day_waveshare_j-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (J)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_day_rpiv2.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_day_rpiv2-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5999" srcset="/wp-content/uploads/2017/01/cam_day_rpiv2-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_day_rpiv2-768x577.jpg 768w, /wp-content/uploads/2017/01/cam_day_rpiv2-1024x769.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Raspberry Pi v2 Camera</td>
<td></td>
</tr>
</tbody>
</table>
<h3>Outdoor (night)</h3>
<table  class=" table table-hover" >
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_carport_rpi.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_carport_rpi-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5989" srcset="/wp-content/uploads/2017/01/cam_carport_rpi-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_carport_rpi-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_carport_rpi-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Raspberry Pi Camera</td>
<td><a href="/wp-content/uploads/2017/01/cam_carport_arducam.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_carport_arducam-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5988" srcset="/wp-content/uploads/2017/01/cam_carport_arducam-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_carport_arducam-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_carport_arducam-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Arducam 5MP RPi Camera</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_carport_waveshare_ir.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_carport_waveshare_ir-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5992" srcset="/wp-content/uploads/2017/01/cam_carport_waveshare_ir-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_carport_waveshare_ir-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_carport_waveshare_ir-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (on)</td>
<td><a href="/wp-content/uploads/2017/01/cam_carport_waveshare_iroff.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_carport_waveshare_iroff-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5993" srcset="/wp-content/uploads/2017/01/cam_carport_waveshare_iroff-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_carport_waveshare_iroff-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_carport_waveshare_iroff-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (off)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_carport_waveshare_i.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_carport_waveshare_i-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5991" srcset="/wp-content/uploads/2017/01/cam_carport_waveshare_i-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_carport_waveshare_i-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_carport_waveshare_i-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (I)</td>
<td><a href="/wp-content/uploads/2017/01/cam_carport_waveshare_j.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_carport_waveshare_j-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5994" srcset="/wp-content/uploads/2017/01/cam_carport_waveshare_j-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_carport_waveshare_j-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_carport_waveshare_j-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (J)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_carport_rpiv2.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_carport_rpiv2-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5990" srcset="/wp-content/uploads/2017/01/cam_carport_rpiv2-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_carport_rpiv2-768x577.jpg 768w, /wp-content/uploads/2017/01/cam_carport_rpiv2-1024x769.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Raspberry Pi v2 Camera</td>
<td></td>
</tr>
</tbody>
</table>
<h3>Indoor (day)</h3>
<table  class=" table table-hover" >
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_indoors_rpi.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_indoors_rpi-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5961" srcset="/wp-content/uploads/2017/01/cam_indoors_rpi-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_indoors_rpi-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_indoors_rpi-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <br /> Raspberry Pi Camera</td>
<td><a href="/wp-content/uploads/2017/01/cam_indoors_arducam.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_indoors_arducam-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5960" srcset="/wp-content/uploads/2017/01/cam_indoors_arducam-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_indoors_arducam-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_indoors_arducam-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <br /> Arducam 5MP RPi Camera</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_indoors_waveshare_ir.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_indoors_waveshare_ir-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5964" srcset="/wp-content/uploads/2017/01/cam_indoors_waveshare_ir-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_indoors_waveshare_ir-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_indoors_waveshare_ir-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (on)</td>
<td><a href="/wp-content/uploads/2017/01/cam_indoors_waveshare_iroff.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_indoors_waveshare_iroff-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5965" srcset="/wp-content/uploads/2017/01/cam_indoors_waveshare_iroff-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_indoors_waveshare_iroff-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_indoors_waveshare_iroff-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (off)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_indoors_waveshare_i.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_indoors_waveshare_i-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5963" srcset="/wp-content/uploads/2017/01/cam_indoors_waveshare_i-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_indoors_waveshare_i-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_indoors_waveshare_i-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (I)</td>
<td><a href="/wp-content/uploads/2017/01/cam_indoors_waveshare_j.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_indoors_waveshare_j-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5966" srcset="/wp-content/uploads/2017/01/cam_indoors_waveshare_j-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_indoors_waveshare_j-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_indoors_waveshare_j-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (J)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_indoors_rpiv2.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_indoors_rpiv2-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5962" srcset="/wp-content/uploads/2017/01/cam_indoors_rpiv2-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_indoors_rpiv2-768x577.jpg 768w, /wp-content/uploads/2017/01/cam_indoors_rpiv2-1024x769.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Raspberry Pi v2 Camera</td>
<td></td>
</tr>
</tbody>
</table>
<h3>Indoor (night)</h3>
<table  class=" table table-hover" >
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_nightindoors_rpi.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_nightindoors_rpi-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5981" srcset="/wp-content/uploads/2017/01/cam_nightindoors_rpi-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_nightindoors_rpi-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_nightindoors_rpi-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Raspberry Pi Camera</td>
<td><a href="/wp-content/uploads/2017/01/cam_nightindoors_arducam.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_nightindoors_arducam-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5980" srcset="/wp-content/uploads/2017/01/cam_nightindoors_arducam-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_nightindoors_arducam-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_nightindoors_arducam-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Arducam 5MP RPi Camera</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_ir.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_ir-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5984" srcset="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_ir-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_ir-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_ir-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (on)</td>
<td><a href="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_iroff.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_iroff-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5985" srcset="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_iroff-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_iroff-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_iroff-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera IR-CUT (off)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_i.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_i-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5983" srcset="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_i-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_i-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_i-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (I)</td>
<td><a href="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_j.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_j-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5986" srcset="/wp-content/uploads/2017/01/cam_nightindoors_waveshare_j-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_j-768x576.jpg 768w, /wp-content/uploads/2017/01/cam_nightindoors_waveshare_j-1024x768.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Waveshare RPi Camera (J)</td>
</tr>
<tr>
<td><a href="/wp-content/uploads/2017/01/cam_nightindoors_rpiv2.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/cam_nightindoors_rpiv2-300x225.jpg" alt="" width="300" height="225" class="aligncenter size-medium wp-image-5982" srcset="/wp-content/uploads/2017/01/cam_nightindoors_rpiv2-300x225.jpg 300w, /wp-content/uploads/2017/01/cam_nightindoors_rpiv2-768x577.jpg 768w, /wp-content/uploads/2017/01/cam_nightindoors_rpiv2-1024x769.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br /> Raspberry Pi v2 Camera</td>
<td></td>
</tr>
</tbody>
</table>
<p><!-- I also tested the accuracy of the advertised FOVs for most of the lenses (&lt;170°). I used OpenCV to calculate the [intrinsic camera matrix](https://en.wikipedia.org/wiki/Camera_resectioning#Intrinsic_parameters) and [lens distortion parameters](https://en.wikipedia.org/wiki/Distortion_(optics)). To do this, I took 40 images of a calibration grid at different orientations and locations and then bootstrap 1000 samples of the 40 images (with replacement) to calculate the camera's horizontal, vertical, and diagonal field of view, focal length, [principal point](https://en.wikipedia.org/wiki/Pinhole_camera_model#The_geometry_and_mathematics_of_the_pinhole_camera), and aspect ratio. The 5MP OV5647 modules were tested at 1296x972 ([2x2 binning](https://picamera.readthedocs.io/en/release-1.12/fov.html#camera-modes)) and the Raspberry Pi v2 Camera was tested at 1640x1232 ([2x2 binning](https://picamera.readthedocs.io/en/release-1.12/fov.html#camera-modes)). Both picture modes record at the full field of view. --></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Replacing Battery in Apple MacBook Pro Retina (Late 2012)</title>
		<link>/2017/01/13/replacing-battery-in-apple-macbook-pro-retina-late-2012/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Sat, 14 Jan 2017 05:03:05 +0000</pubDate>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">/?p=5897</guid>

					<description><![CDATA[The battery on my Late 2012 Apple MacBook Pro Retina is garbage. It holds a charge for no more than 20 minutes, completely dies at approximately 50% reported battery charge remaining, and the menu has an exclamation point noting that I need to service my battery. Admittedly, this is after over four years of continuous [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The battery on my Late 2012 Apple MacBook Pro Retina is garbage. It holds a charge for no more than 20 minutes, completely dies at approximately 50% reported battery charge remaining, and the menu has an <a href="https://support.apple.com/en-us/HT204054">exclamation point</a> noting that I need to service my battery. Admittedly, this is after over four years of continuous usage for my research and studies and I&#8217;ve downplayed the warnings for almost a year now. I have avoided replacing the battery because I was nowhere near the maximum number of cycles that <a href="https://support.apple.com/en-us/HT201585">Apple claims</a> I should be able to reach before the battery is considered &#8220;consumed&#8221; (~600 charge cycles vs. Apple&#8217;s stated max. of 1000). But I could not stand the fact that I can&#8217;t use my laptop without a power cable and none of the fixes suggested online were working (e.g., <a href="https://support.apple.com/en-us/HT201295">resetting the SMC</a>). So, it was time to replace the battery.</p>
<p><a href="/wp-content/uploads/2017/01/battery_replacement_open_overview.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/battery_replacement_open_overview-1024x575.jpg" alt="" width="648" height="364" class="aligncenter size-large wp-image-5904" srcset="/wp-content/uploads/2017/01/battery_replacement_open_overview-1024x575.jpg 1024w, /wp-content/uploads/2017/01/battery_replacement_open_overview-300x169.jpg 300w, /wp-content/uploads/2017/01/battery_replacement_open_overview-768x431.jpg 768w" sizes="auto, (max-width: 648px) 100vw, 648px" /></a></p>
<p><span id="more-5897"></span></p>
<p>Apple charges <a href="https://support.apple.com/mac-notebooks/repair/service/pricing">$199</a> (+ tax) to replace a 13-inch/15-inch MacBook Pro with Retina display battery. However there are a number of 3rd party batteries available on Amazon that cost ~<a href="http://amzn.to/2jBqCWl">$50</a>&#8211;<a href="http://amzn.to/2jBsqP3">$80</a> with Prime shipping, meaning that I could save $125+ by doing the repair myself. After a <a href="/2016/04/03/upgrading-ssd-in-apple-macbook-pro-retina-late-2012/">very successful SSD transplant</a>, I decided to try out iFixit&#8217;s <a href="https://www.ifixit.com/Guide/MacBook+Pro+13-Inch+Retina+Display+Late+2012+Battery+Replacement/13076">MacBook Pro 13&#8243; Retina Display Late 2012 Battery Replacement guide</a>.</p>
<p>My old batteries are from September 2012 and have gotten some good use out of them, so it&#8217;s about time for retirement:</p>
<p><a href="/wp-content/uploads/2017/01/battery_replacement_old_cell.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/battery_replacement_old_cell-1024x577.jpg" alt="" width="648" height="365" class="aligncenter size-large wp-image-5902" srcset="/wp-content/uploads/2017/01/battery_replacement_old_cell-1024x577.jpg 1024w, /wp-content/uploads/2017/01/battery_replacement_old_cell-300x169.jpg 300w, /wp-content/uploads/2017/01/battery_replacement_old_cell-768x432.jpg 768w" sizes="auto, (max-width: 648px) 100vw, 648px" /></a></p>
<p>There are a number of batteries available, but all appear to be from no-name 3rd parties:</p>
<ul>
<li><a href="http://amzn.to/2jBgDQK">LQM New Laptop Battery for Apple MacBook Pro Retina 13&#8243; A1437 A1425,Compatible 020-7652-A MD101 MD101LL/A MD101ZP/A MD102 MD102LL/A MD102ZP/A MD212 MD213 ME662 with Four Free Screwdrivers</a> &#8211; $79.99</li>
<li><a href="http://amzn.to/2jcD9D2">Lizone New Laptop Battery for Apple MacBook Pro 13 inch Retina Mid 2012 A1425 MD212 MD213 MD212LL/A MD213CH/A / Apple A1437 Laptop Notebook battery / Li-Polymer 11.21V 74Wh</a> &#8211; $69.99</li>
<li><a href="http://amzn.to/2jBrB8Z">SIKER11.21V 74WH High Performance Battery for Apple Macbook Pro Retina 13&#8243; A1437 A1425 020-7652-A , fits MD101, MD101LL/A, MD101ZP/A, MD102, MD102LL/A, MD102ZP/A, MD212, MD213, ME662</a> &#8211; $69.99</li>
<li><a href="http://amzn.to/2jBjJUR">Egoway MacBook Pro Retina 13&#8243; Battery for Apple A1437 A1425 (Late 2012, Early 2013 Version) &#8211; [Li-Polymer 11.21V 74Wh]</a> &#8211; $59.99</li>
<li><a href="http://amzn.to/2jBn9Hk">BRTONG® High Performance New Laptop Battery for Apple MacBook Pro Retina 13&#8243; A1437 A1425 020-7652-A 020-7653-A MD212CH/A MD212 MD213 MD212LL/A MD213CH/A [Li-ion 11.21V 74Wh/6600mAh] &#8211; 18 Months Warranty</a> &#8211; $49.99</li>
</ul>
<p>Many of the links have the same product photos, so I suspect there are a number of &#8220;companies&#8221; reselling the same batteries. I ended up purchasing the <a href="http://amzn.to/2jBn9Hk">BRTONG battery</a> for $49.99 with a credit card that offers an additional 1 year extended warranty, so if I have any issues in 30 months (2.5 years), I should be covered for repair/replacement. My one complaint is that the battery I received has a manufacture date from 2013(!). Hopefully there are no issues, but I&#8217;ll keep an eye on it.</p>
<p><a href="/wp-content/uploads/2017/01/battery_replacement_new_cell.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/battery_replacement_new_cell-1024x768.jpg" alt="" width="648" height="486" class="aligncenter size-large wp-image-5901" srcset="/wp-content/uploads/2017/01/battery_replacement_new_cell-1024x768.jpg 1024w, /wp-content/uploads/2017/01/battery_replacement_new_cell-300x225.jpg 300w, /wp-content/uploads/2017/01/battery_replacement_new_cell-768x576.jpg 768w" sizes="auto, (max-width: 648px) 100vw, 648px" /></a></p>
<p>There are also some oddities with the controller (note the white epoxy and the replacement information sticker), so I am suspecting that the battery may be remanufactured:</p>
<p><a href="/wp-content/uploads/2017/01/connector_comparison.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/connector_comparison-1024x576.jpg" alt="" width="648" height="365" class="aligncenter size-large wp-image-5906" srcset="/wp-content/uploads/2017/01/connector_comparison-1024x576.jpg 1024w, /wp-content/uploads/2017/01/connector_comparison-300x169.jpg 300w, /wp-content/uploads/2017/01/connector_comparison-768x432.jpg 768w" sizes="auto, (max-width: 648px) 100vw, 648px" /></a></p>
<p>One more weird aspect is that the batteries were very difficult to remove from the protective backing, leaving quite a bit of remnants on the protective sheet:</p>
<p><a href="/wp-content/uploads/2017/01/battery_replacement_leftover_residue.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/battery_replacement_leftover_residue-1024x576.jpg" alt="" width="648" height="365" class="aligncenter size-large wp-image-5900" srcset="/wp-content/uploads/2017/01/battery_replacement_leftover_residue-1024x576.jpg 1024w, /wp-content/uploads/2017/01/battery_replacement_leftover_residue-300x169.jpg 300w, /wp-content/uploads/2017/01/battery_replacement_leftover_residue-768x432.jpg 768w" sizes="auto, (max-width: 648px) 100vw, 648px" /></a></p>
<p>Following the <a href="https://www.ifixit.com/Guide/MacBook+Pro+13-Inch+Retina+Display+Late+2012+Battery+Replacement/13076">iFixit guide</a>, I disassembled the laptop, carefully removed the old battery, and installed the new one.</p>
<p>And it worked!  The hardest part of the procedure was removing the old batteries and the old adhesive from the Macbook&#8217;s case. However, it took about 30 minutes to complete, so I would highly recommend this fix for anyone having battery issues with their older Macbook Pro Retina.</p>
<p>Here&#8217;s my battery stats from the Apple System Information, with the old battery on the left and the new battery on the right (interesting info highlighted in yellow):</p>
<p><a href="/wp-content/uploads/2017/01/battery_replacement_system_info.png"><img loading="lazy" decoding="async" src="/wp-content/uploads/2017/01/battery_replacement_system_info-1024x781.png" alt="" width="648" height="494" class="aligncenter size-large wp-image-5912" srcset="/wp-content/uploads/2017/01/battery_replacement_system_info-1024x781.png 1024w, /wp-content/uploads/2017/01/battery_replacement_system_info-300x229.png 300w, /wp-content/uploads/2017/01/battery_replacement_system_info-768x586.png 768w" sizes="auto, (max-width: 648px) 100vw, 648px" /></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Upgrading SSD in Apple MacBook Pro Retina (Late 2012)</title>
		<link>/2016/04/03/upgrading-ssd-in-apple-macbook-pro-retina-late-2012/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Mon, 04 Apr 2016 05:37:51 +0000</pubDate>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">/?p=5798</guid>

					<description><![CDATA[For some time now, I have hit the storage limit on the 256GB SSD in my Late 2012 Apple MacBook Pro Retina. I&#8217;ve needed to move a significant chunk of data to external drives, which impedes access and frankly is a pain in the butt. I&#8217;ve considered a number of methods to upgrade the SSD, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For some time now, I have hit the storage limit on the 256GB SSD in my Late 2012 Apple MacBook Pro Retina. I&#8217;ve needed to move a significant chunk of data to external drives, which impedes access and frankly is a pain in the butt. I&#8217;ve considered a number of methods to upgrade the SSD, but Apple decided to use a proprietary connector for the SSD (rather than using the mSATA or, more recently, the M.2 standards), which has made upgrading more difficult/expensive than it should be. However, even though there were a few minor roadblocks, I ended up successfully upgrading the SSD using a combination of 3rd party modules. Since I could not find anecdotal reports of similar upgrades, I wanted to throw mine out into the ether.<br />
<span id="more-5798"></span></p>
<p>In late 2012, iFixit.com posted a teardown of the <a href="https://www.ifixit.com/Teardown/MacBook+Pro+13-Inch+Retina+Display+Late+2012+Teardown/11225">MacBook Pro 13&#8243; Retina Display Late 2012</a> and noted that:</p>
<blockquote>
<ul>
<li>The most striking layout change resulting from the shrink from a 15&#8243; to 13&#8243; form factor is the rearranged battery cells. This allowed Apple&#8217;s designers to cleverly tuck the SSD away underneath the trackpad assembly.</li>
<li>The empty space next to the SSD is very un-Apple. It&#8217;s not like them to leave big air gaps in their newest, sleekest designs.</li>
<li>Our first thought was that a standard 2.5&#8243; laptop drive might fit in this space, and it almost looks like this little nook was designed with that in mind.</li>
<li>Our 9.5mm Crucial SSD didn&#8217;t allow the bottom cover to be closed, but just by a smidge. We&#8217;ll see if a 7 mm or 5 mm super-slim hard drive could be incorporated into the space.</li>
</ul>
</blockquote>
<p>iFixit later posted a guide to <a href="https://www.ifixit.com/Guide/MacBook+Pro+13-Inch+Retina+Display+Late+2012+SSD+Replacement/12823">replacing the SSD</a> in early 2013, but at the time, the only SSD alternatives appeared to be 3rd party modules like the <a href="http://amzn.to/1N4A9NF">Transcend JetDrive</a> ($280 for 480GB drive and external USB 3.0 case) or the <a href="http://eshop.macsales.com/shop/SSD/OWC/Air-Retina/Apple-MacBook-Pro-Retina-2012-Drive-Internal-Flash">OWC Aura</a> ($218 for 480GB drive only).</p>
<p>These 3rd party options, which have been designed specifically for the MacBook Pro&#8217;s SSD form factor, have been outside of my price range. However, recently, I&#8217;ve seen adapters available that would allow me to use smaller form factor SSDs with my A1425 MacBook Pro. For example:</p>
<ul>
<li>mSATA SSD to MacBook Pro Retina (A1425 A1398) Adapter (<a href="https://amzn.to/2J5T5Rh">Amazon</a>, <a href="http://www.dx.com/p/msata-to-apple-2012-laptop-pc-7-17-ssd-a1425-a1398-mc975-me662-419710?Utm_rid=62305252&amp;Utm_source=affiliate">DX</a>)</li>
<li>M.2 SSD to MacBook Pro Retina (A1425 A1398) Adapter (<a href="http://amzn.to/1SLVDmS">Amazon</a>, <a href="http://www.dx.com/p/m-2-ngff-ssd-to-2012-version-apple-macbook-pro-a1425-a1398-ssd-adapter-card-22-x-60mm-420132?Utm_rid=62305252&amp;Utm_source=affiliate">DX</a>)</li>
</ul>
<p>Combine these adapters with either a <a href="http://amzn.to/25FCni7">Samsung 850 EVO mSATA SSD</a> or a <a href="http://amzn.to/25FCoCu">Transcend M.2 SSD</a> (respectively) and you could potentially upgrade the SSD for significantly less than the designed-from-scratch modules offered by Transcend and OWC. I researched the adapters a bit more and found that if I chose to go the M.2 route, that I would need to make sure the new drive was SATA rather than PCIe (such as the <a href="http://amzn.to/1SLVHDa">Samsung 950 PRO</a>). At the end of the day, I ordered a <a href="http://amzn.to/1SLVDmS">M.2 SSD to MacBook Pro Retina (A1425 A1398) Adapter</a> and a <a href="http://amzn.to/25FCoCu">512GB Transcend M.2 SSD</a> from Amazon and decided to see if I could get it up and running.</p>
<p>I wasn&#8217;t sure if there were going to be any performance gains/penalties, so I checked the speed of the original OEM 256GB SSD using <a href="https://itunes.apple.com/us/app/blackmagic-disk-speed-test/id425264550?mt=12">Blackmagic Disk Speed Test</a>:</p>
<p><img loading="lazy" decoding="async" src="/wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Apple-SSD-952x1024.png" alt="Blackmagic Disk Speed Test  - Apple SSD" width="648" height="697" class="aligncenter size-large wp-image-5805" srcset="/wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Apple-SSD-952x1024.png 952w, /wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Apple-SSD-279x300.png 279w, /wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Apple-SSD-768x827.png 768w, /wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Apple-SSD.png 1260w" sizes="auto, (max-width: 648px) 100vw, 648px" /></p>
<p>Not too bad.</p>
<p>When I received the adapter and new SSD in the mail, I backed up my old SSD onto an external drive using Time Machine. I also created an <a href="http://osxdaily.com/2015/09/30/create-os-x-el-capitan-boot-install-drive/">El Capitan boot drive</a> so that I could wipe the old drive and restore the Time Machine backup to the new SSD. I erased the old drive and although I tried securely wiping the drive, there are some <a href="http://apple.stackexchange.com/questions/6278/how-to-securely-erase-an-ssd-drive">lingering issues with wiping SSDs</a>. Now I was ready for the transplant. Using the iFixit <a href="https://www.ifixit.com/Guide/MacBook+Pro+13-Inch+Retina+Display+Late+2012+SSD+Replacement/12823">SSD Replacement guide</a>, I removed the old SSD in preparation for the new module.</p>
<p>The M.2 drive fit perfectly into the adapter:</p>
<p><img loading="lazy" decoding="async" src="/wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-1024x580.jpg" alt="Transcend 512GB M.2 in A1425 Adapter" width="648" height="367" class="aligncenter size-large wp-image-5809" srcset="/wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-1024x580.jpg 1024w, /wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-300x170.jpg 300w, /wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-768x435.jpg 768w" sizes="auto, (max-width: 648px) 100vw, 648px" /></p>
<p>And I threw the whole shebang into the MacBook&#8217;s drive caddy:</p>
<p><img loading="lazy" decoding="async" src="/wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-in-HDD-caddy-1024x906.jpg" alt="Transcend 512GB M.2 in A1425 Adapter in HDD caddy" width="648" height="573" class="aligncenter size-large wp-image-5811" srcset="/wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-in-HDD-caddy-1024x906.jpg 1024w, /wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-in-HDD-caddy-300x265.jpg 300w, /wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-in-HDD-caddy-768x680.jpg 768w, /wp-content/uploads/2016/04/Transcend-512GB-M.2-in-A1425-Adapter-in-HDD-caddy.jpg 1808w" sizes="auto, (max-width: 648px) 100vw, 648px" /></p>
<p>After reassembling the machine, I started up the computer using the boot disk and&#8230; It worked. Awesome. I restored the time machine backup onto the new drive and it booted up without any issues. One little hiccup is that Apple disables <a href="https://en.wikipedia.org/wiki/Trim_(computing)">TRIM</a> for 3rd party SSDs, so you need to make sure to enable it after-the-fact using <a href="http://osxdaily.com/2015/10/29/use-trimforce-trim-ssd-mac-os-x/">trimforce</a>. It&#8217;s also faster than the original OEM SSD:</p>
<p><img loading="lazy" decoding="async" src="/wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Transcend-SSD-952x1024.png" alt="Blackmagic Disk Speed Test  - Transcend SSD" width="648" height="697" class="aligncenter size-large wp-image-5812" srcset="/wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Transcend-SSD-952x1024.png 952w, /wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Transcend-SSD-279x300.png 279w, /wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Transcend-SSD-768x827.png 768w, /wp-content/uploads/2016/04/Blackmagic-Disk-Speed-Test-Transcend-SSD.png 1260w" sizes="auto, (max-width: 648px) 100vw, 648px" /></p>
<p>If you have an older MacBook Pro that&#8217;s running out of space, this is an easy and very worthwhile upgrade.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Backpack and Canon T3i lost/stolen in Frankfurt (Main) Hauptbahnhof</title>
		<link>/2014/12/31/backpack-and-canon-t3i-loststolen-in-frankfurt-main-hauptbahnhof/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Wed, 31 Dec 2014 13:52:36 +0000</pubDate>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<guid isPermaLink="false">/?p=5364</guid>

					<description><![CDATA[I had a red and black The North Face backpack/Rucksack taken from a train in Frankfurt, Germany this past Monday, so I&#8217;m posting this online with the hope, however remote, to contact the individual(s) who removed the bag from the train and to see if they can contact me to return it. It contained my [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I had a red and black The North Face backpack/Rucksack taken from a train in Frankfurt, Germany this past Monday, so I&#8217;m posting this online with the hope, however remote, to contact the individual(s) who removed the bag from the train and to see if they can contact me to return it.  It contained my DSLR camera, lenses, and a number of personal keepsakes that have really hurt to lose.</p>
<p><a href="/wp-content/uploads/2014/12/BackpackOnSteve.jpg"><img loading="lazy" decoding="async" src="/wp-content/uploads/2014/12/BackpackOnSteve-233x300.jpg" alt="Lost/Stolen The North Face Hot Shot Backpack" width="233" height="300" class="aligncenter size-medium wp-image-5462" srcset="/wp-content/uploads/2014/12/BackpackOnSteve-233x300.jpg 233w, /wp-content/uploads/2014/12/BackpackOnSteve.jpg 634w" sizes="auto, (max-width: 233px) 100vw, 233px" /></a></p>
<p>Here is a short run-down of what happened: On Monday, December 29th, 2014, I went down to the Frankfurt central train station (Hauptbahnhof) with my wife and friends to go ice skating at the Eissporthalle Frankfurt.  We took a Deutsche Bahn (DB) train from Giessen, Germany to Frankfurt, Germany, departing at 3:22 PM and  arriving at 4:02 PM. At the beginning of the trip, I placed my backpack on the  luggage rack above the seat. About 10 minutes after exiting the train, after having taken an S-Bahn train to Hauptwache, I realized I did not have my bag. I immediately took another S-Bahn back to Frankfurt Hbf, ran up to the train platform, and found my train still waiting at the track (total time from departing the train to returning was approximately 20 minutes).  I quickly searched the train because it was about to leave to head northward, but the backpack was gone.</p>
<p>I immediately notified the DB lost property office (Fundbüro) and made a  claim. I also notified the police but will need to wait 1 week before I can officially file a police report (which I plan on doing on Monday if the bag has not been found).</p>
<p>Unfortunately, I don&#8217;t know how much identifying information was in the backpack (it did not contain any IDs), but in the future, I will make sure to <a href="http://mrandrewmcdonald.com/a-pictorial-guide-to-avoiding-camera-loss/">include contact information on the camera</a> to help the person who finds my things to reach out to me, if this were to ever happen again.</p>
<p><span id="more-5364"></span></p>
<p>Here is an incomplete inventory:</p>
<ul>
<li>The North Face Hot Shot backpack in red and black</li>
<li><a href="http://www.amazon.com/gp/product/B001TZWNF0/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B001TZWNF0&amp;linkCode=as2&amp;tag=semifluidcom-20&amp;linkId=OECNHA5QXH6TTTR6">Case Logic SLRC-202 SLR Camera Bag</a></li>
<li><a href="http://www.amazon.com/gp/product/B00IB1BTWI/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00IB1BTWI&amp;linkCode=as2&amp;tag=semifluidcom-20&amp;linkId=67NY6FQJXKYS5UH4">Canon T3i body</a> with memory cards (serial #162037009896)</li>
<li><a href="http://www.amazon.com/gp/product/B00009XVCZ/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00009XVCZ&amp;linkCode=as2&amp;tag=semifluidcom-20&amp;linkId=4Q22XQPAXMOAWYDQ">Canon EF 50mm f/1.4 USM lens</a></li>
<li><a href="http://www.amazon.com/gp/product/B008B48AAE/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B008B48AAE&amp;linkCode=as2&amp;tag=semifluidcom-20&amp;linkId=GH7X3X4BB3KT63Q4">Sigma 18-250mm f3.5-6.3 DC MACRO OS HSM lens</a></li>
<li>Quite a few other personal effects (that I am omitting in the hope that the bag is found so that I can provide some form of identification)</li>
</ul>
<p>Here are some representative images of the items lost (the backpack at the top of the page the actual bag stolen):</p>

<a href='/wp-content/uploads/2014/12/HotShot_red.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/HotShot_red-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='/wp-content/uploads/2014/12/HotShot_back.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/HotShot_back-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='/wp-content/uploads/2014/12/HotShot_inside.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/HotShot_inside-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='/wp-content/uploads/2014/12/CaseLogicCase.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/CaseLogicCase-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='/wp-content/uploads/2014/12/CanonBody1.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/CanonBody1-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" srcset="/wp-content/uploads/2014/12/CanonBody1-150x150.jpg 150w, /wp-content/uploads/2014/12/CanonBody1-300x300.jpg 300w, /wp-content/uploads/2014/12/CanonBody1.jpg 1000w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>
<a href='/wp-content/uploads/2014/12/CanonBody2.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/CanonBody2-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" srcset="/wp-content/uploads/2014/12/CanonBody2-150x150.jpg 150w, /wp-content/uploads/2014/12/CanonBody2-300x300.jpg 300w, /wp-content/uploads/2014/12/CanonBody2.jpg 1000w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>
<a href='/wp-content/uploads/2014/12/CanonBody3.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/CanonBody3-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='/wp-content/uploads/2014/12/CanonLens.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/CanonLens-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='/wp-content/uploads/2014/12/SigmaLens.jpg'><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2014/12/SigmaLens-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>

<p><center><small>(note: product photos are from Amazon.com, except for backpack photos, which are from <a href="http://thenorthfaceonline.blogspot.de/p/hotshot.html">thenorthfaceonline.blogspot.de</a>)</small></center></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>HTML to Markdown Converter</title>
		<link>/2014/07/12/html-to-markdown-converter/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Sat, 12 Jul 2014 07:54:28 +0000</pubDate>
				<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">/?p=5074</guid>

					<description><![CDATA[I am moving my blog post formatting code over to Markdown and found an incredibly useful HTML to Markdown converter by Dom Christie. It allows me to take HTML, for example: &#60;h2&#62;;A great list of websites:&#60;/h2&#62; &#60;ul&#62; &#60;li&#62;&#60;a href = "/"&#62;Semifluid.com&#60;/a&#62;&#60;/li&#62; &#60;li&#62;&#60;a href = "https://uni-giessen.academia.edu/StevenACholewiak"&#62;Steven Cholewiak's Academia.edu profile&#60;/a&#62;&#60;/li&#62; &#60;li&#62;&#60;a href = "https://www.researchgate.net/profile/Steven_Cholewiak"&#62;Steven Cholewiak's ResearchGate.com profile&#60;/a&#62;&#60;/li&#62; [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I am moving my blog post formatting code over to <a href="http://en.wikipedia.org/wiki/Markdown">Markdown</a> and found an incredibly useful <a href="https://github.com/domchristie/to-markdown">HTML to Markdown converter</a> by <a href="http://domchristie.co.uk/">Dom Christie</a>.  It allows me to take HTML, for example:</p>
<pre><code>&lt;h2&gt;;A great list of websites:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href = "/"&gt;Semifluid.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href = "https://uni-giessen.academia.edu/StevenACholewiak"&gt;Steven Cholewiak's Academia.edu profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href = "https://www.researchgate.net/profile/Steven_Cholewiak"&gt;Steven Cholewiak's ResearchGate.com profile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>And easily convert it to markdown:</p>
<pre><code>## A great list of websites:

*   [Semifluid.com]()/
*   [Steven Cholewiak's Academia.edu profile](https://uni-giessen.academia.edu/StevenACholewiak)
*   [Steven Cholewiak's ResearchGate.com profile](https://www.researchgate.net/profile/Steven_Cholewiak)
</code></pre>
<p>The code can be found on GitHub at <a href="https://github.com/domchristie/to-markdown">to-markdown</a> and Dom has a <a href="http://domchristie.github.io/to-markdown/">live demo</a> available too.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cinnamon Buns</title>
		<link>/2014/03/15/cinnamon-buns/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Sat, 15 Mar 2014 19:01:26 +0000</pubDate>
				<category><![CDATA[Cooking]]></category>
		<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">/?p=4649</guid>

					<description><![CDATA[Here&#8217;s a short video of some cinnamon buns I made. The video was set to music by Jill Zimmerman &#8211; Earthbound (CC BY-NC-SA 3.0). Click through for the recipe. Here&#8217;s the recipe (adapted from the Paula Deen&#8217;s Cinnamon Rolls recipe): Dough: 1/4-ounce package yeast (I used active yeast, hefe in Germany) 1/2 cup warm water [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Here&#8217;s a short video of some cinnamon buns I made.  The video was set to music by <a href="http://goo.gl/nPrVjC">Jill Zimmerman &#8211; Earthbound</a> (<a href="https://creativecommons.org/licenses/by-nc-sa/3.0/">CC BY-NC-SA 3.0</a>).</p>
<p><center><br />
<iframe loading="lazy" title="Cinnamon Buns" src="https://player.vimeo.com/video/89191894?dnt=1&amp;app_id=122963" width="648" height="365" frameborder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write"></iframe><br />
</center></p>
<p>Click through for the recipe.</p>
<p><span id="more-4649"></span></p>
<p>Here&#8217;s the recipe (adapted from the <a href="http://www.foodnetwork.com/recipes/paula-deen/cinnamon-rolls-recipe.html">Paula Deen&#8217;s Cinnamon Rolls</a> recipe):</p>
<p><strong>Dough:</strong></p>
<ul>
<li>1/4-ounce package yeast (I used active yeast, hefe in Germany)</li>
<li>1/2 cup warm water</li>
<li>1/2 cup scalded milk</li>
<li>1/4 cup sugar</li>
<li>1/3 cup butter or shortening (I used butter)</li>
<li>1 teaspoon salt</li>
<li>1 egg</li>
<li>3 1/2 to 4 cups all-purpose flour</li>
</ul>
<p><strong>Filling:</strong></p>
<ul>
<li>1/2 cup melted butter, plus more for pan</li>
<li>3/4 cup sugar, plus more for pan</li>
<li>2 tablespoons ground cinnamon</li>
<li>3/4 cup raisins, walnuts, or pecans, optional</li>
</ul>
<p><strong>Glaze:</strong></p>
<ul>
<li>4 tablespoons butter</li>
<li>2 cups powdered sugar</li>
<li>1 teaspoon vanilla extract</li>
<li>3 to 6 tablespoons hot water</li>
</ul>
<p><strong>Directions:</strong></p>
<ol>
<li>Heat oven to 350 degrees F.</li>
<li>In a small bowl, dissolve yeast in warm water and set aside, allow to bloom.</li>
<li>In a large bowl mix milk, sugar, melted butter, salt and egg. Add 2 cups of flour and mix until smooth. Add yeast mixture. Mix in remaining flour until dough is easy to handle. Knead dough on lightly floured surface for 5 to 10 minutes. Place in well-greased bowl, cover and let rise until doubled in size, usually 1 to 1 1/2 hours.</li>
<li>When doubled in size, punch down dough. Roll out on a floured surface into a 15 by 9-inch rectangle. Spread melted butter all over dough. Mix sugar and cinnamon and sprinkle over buttered dough. Sprinkle with walnuts, pecans, or raisins if desired. Beginning at the 15-inch side, role up dough and pinch edge together to seal. Cut into 12 to 15 slices.</li>
<li>Coat the bottom of baking pan with butter and sprinkle with sugar. Place cinnamon roll slices close together in the pan and let rise until dough is doubled, about 45 minutes. Bake for about 30 minutes or until nicely browned.</li>
<li>Meanwhile, mix butter, powdered sugar, and vanilla. Add hot water 1 tablespoon at a time until the glaze reaches desired consistency. Spread over slightly cooled rolls.</li>
</ol>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Chocolate &#038; Hazelnut Chip Cookies</title>
		<link>/2013/10/07/chocolate-hazelnut-chip-cookies/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Mon, 07 Oct 2013 19:16:14 +0000</pubDate>
				<category><![CDATA[Cooking]]></category>
		<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">/?p=3733</guid>

					<description><![CDATA[Here&#8217;s a short video of cookies I made this weekend. They turned out really well, so I wanted to share the delicious recipe (based upon the classic Nestlé® Toll House® chocolate chip cookie recipe). Here&#8217;s a little time-lapse set to music by Jill Zimmerman &#8211; Tunnel Vision (CC BY-NC-SA 3.0). Click through for the recipe. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Here&#8217;s a short video of cookies I made this weekend.  They turned out really well, so I wanted to share the delicious recipe (based upon the classic Nestlé® Toll House® chocolate chip cookie recipe).  Here&#8217;s a little time-lapse set to music by <a href="http://goo.gl/moZnTb">Jill Zimmerman &#8211; Tunnel Vision</a> (<a href="https://creativecommons.org/licenses/by-nc-sa/3.0/">CC BY-NC-SA 3.0</a>).</p>
<p><center><br />
<iframe loading="lazy" title="Chocolate and Hazelnut Chip Cookies" src="https://player.vimeo.com/video/76327628?dnt=1&amp;app_id=122963" width="648" height="365" frameborder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write"></iframe><br />
</center></p>
<p>Click through for the recipe.<br />
<span id="more-3733"></span><br />
Here&#8217;s the recipe (adapted from the <a href="http://www.verybestbaking.com/recipes/18476/Original-NESTL%C3%89-TOLL-HOUSE-Chocolate-Chip-Cookies/detail.aspx">Original Nestlé® Toll House® Chocolate Chip Cookie</a> recipe):</p>
<ul>
<li>2 1/4 cups all-purpose flour</li>
<li>1 teaspoon baking soda</li>
<li>1 teaspoon salt</li>
<li>200g butter (Irish preferred), softened</li>
<li>3/4 cup granulated sugar</li>
<li>3/4 cup packed brown sugar</li>
<li>1 teaspoon vanilla extract</li>
<li>2 large eggs</li>
<li>2 chocolate and hazelnut bars</li>
</ul>
<ol>
<li>Preheat oven to 375° F.</li>
<li>Combine flour, baking soda and salt in small bowl. Beat butter, granulated sugar, brown sugar and vanilla extract in large mixer bowl until creamy. Add eggs, one at a time, beating well after each addition. Gradually beat in flour mixture. Stir in chopped-up chocolate bars. Drop by rounded dessert spoons (dsp, 2 teaspoons) onto parchment paper.</li>
<li>Bake for approximately 9 minutes or until golden brown. Cool on baking sheets for 2 minutes; move to wire racks to cool completely.</li>
</ol>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Magic Lantern HDR video to tonemapped video with MATLAB scripts</title>
		<link>/2013/10/05/magic-lantern-hdr-video-to-tonemapped-video-with-matlab-scripts/</link>
		
		<dc:creator><![CDATA[Steven A. Cholewiak]]></dc:creator>
		<pubDate>Sat, 05 Oct 2013 20:40:06 +0000</pubDate>
				<category><![CDATA[Cooking]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[MATLAB]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">/?p=3713</guid>

					<description><![CDATA[I have a Canon T3i with a Canon EF 50mm f1.4 lens that I use for the gross majority of my day-to-day photography these days. I&#8217;ve been using a custom firmware for the Canon called Magic Lantern that provides a some interesting (and useful!) functions. One of them is HDR video. Here&#8217;s a beautiful example [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I have a <a href="http://www.amazon.com/gp/product/B004J3V90Y/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004J3V90Y&amp;linkCode=as2&amp;tag=semifluidcom-20">Canon T3i</a> with a <a href="http://www.amazon.com/gp/product/B00009XVCZ/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00009XVCZ&amp;linkCode=as2&amp;tag=semifluidcom-20">Canon EF 50mm f1.4</a> lens that I use for the gross majority of my day-to-day photography these days. I&#8217;ve been using a custom firmware for the Canon called <a href="http://www.magiclantern.fm/">Magic Lantern</a> that provides a some interesting (and useful!) <a href="http://www.magiclantern.fm/features.html">functions</a>.  One of them is HDR video.  Here&#8217;s a beautiful example of what can be done:</p>
<p>http://www.youtube.com/watch?v=bLxYTT_0GEI</p>
<p>I tried my hand at processing the HDR video output and was able to get a reasonably nice tone-mapped video:</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Reinhard02" width="648" height="365" src="https://www.youtube.com/embed/OfC8oNQ4MV8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>After the break, you&#8217;ll find how I processed the initial Magic Lantern video using MATLAB and exiftool and tone-mapped the output using Luminance HDR.</p>
<p><span id="more-3713"></span></p>
<p>First, we need to process the video with a function I (poorly) named &#8216;Step1MovieToInterpolatedFrames.m&#8217; to separate the dark and light frames.  The video is first loaded using the VideoReader object.  Then we check to see if the first frame is darker or lighter than the second. This is admittedly a bit of a hack, but given the gross differences in exposure, seems to work well enough.  After determining whether the first is light or dark, we then loop through all the frames of the movie, saving the real frames and appending an &#8220;L&#8221; to signify they are &#8220;light&#8221; and, also, interpolate between the frames.  Why go through the bother of interpolation? Well, there will be image registration problems with the tone-mapping if we assume that a given dark frame matches the earlier or later light frame, especially with high-speed motion. Interpolation helps us &#8220;smooth&#8221; these errors out. Note that ideally we would use a morphing algorithm (similar to the one used by Twixtor), but this is the quickest method for the time being. After saving each frame, I use <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/">exiftool</a> to assign an aperture value.  Note that this has <em>nothing</em> to do with the real aperture value, but helps Luminance HDR tonemap the composite image. We do this for the dark frames as well, but now we take into account the EV shift in the video&#8217;s ISO when writing the aperture value using exiftool.</p>
<p>The second function, &#8216;Step2FramesToHDRFrames.m&#8217;, takes the individual light and dark frames and generates tone-mapped images.  We go through every frame and use the Luminance HDR CLI (command line interface) to generate an HDR image and tone-map it (here using the mantiuk08 tone-mapping operator).</p>
<p>And the final function (&#8216;Step3HDRFramesToVideos.m&#8217;) compiles all of the tone-mapped images into videos (one for the light frames, one for the dark frames, and one for the tonemapped frames).</p>
<p>The code can be found at the bottom of the post.</p>
<p>So, what do each of the Luminance HDR <a href="http://osp.wikidot.com/parameters-for-photographers">tonemapping operators</a> look like (with their default parameters) when applied to a video?  Here&#8217;s the source (note that YouTube strips out the alternating frames, you can find the original MOV <a href="/wp-content/uploads/2013/10/MVI_7961.MOV">here</a>):</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - RAW" width="648" height="365" src="https://www.youtube.com/embed/HxZaAu9Y2KQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Ashikhmin</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Ashikmin" width="648" height="365" src="https://www.youtube.com/embed/L43U3v2Eg_o?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Drago</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Drago" width="648" height="365" src="https://www.youtube.com/embed/ZahHcLbSieg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Durand</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Durand" width="648" height="365" src="https://www.youtube.com/embed/TAgFLnN038g?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Fattal</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Fattal" width="648" height="365" src="https://www.youtube.com/embed/3GeijU30Uu8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Mantiuk 06</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Mantiuk06" width="648" height="365" src="https://www.youtube.com/embed/NnG-rZrbAGA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Mantiuk 08</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Mantiuk08" width="648" height="365" src="https://www.youtube.com/embed/r16tT6ZO8os?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Pattanaik</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Pattanaik" width="648" height="365" src="https://www.youtube.com/embed/gqaQjkBCvtc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Reinhard 02</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Reinhard02" width="648" height="365" src="https://www.youtube.com/embed/OfC8oNQ4MV8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Reinhard 05</p>
<p><iframe loading="lazy" title="Magic Lantern HDR video - Apple being washed - Reinhard05" width="648" height="365" src="https://www.youtube.com/embed/6HeQBwKgzB0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p><script src="https://gist.github.com/OrganicIrradiation/4d63a870c3ac852f4a0f.js"></script></p>
]]></content:encoded>
					
		
		<enclosure url="/wp-content/uploads/2013/10/MVI_7961.MOV" length="87059684" type="video/quicktime" />

			</item>
	</channel>
</rss>
