<?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>Blog &#187; ShinyTouch</title>
	<atom:link href="http://antimatter15.com/wp/category/touchscreens/shinytouch/feed/" rel="self" type="application/rss+xml" />
	<link>http://antimatter15.com/wp</link>
	<description>this title probably isn&#039;t very original</description>
	<lastBuildDate>Fri, 23 Jul 2010 21:21:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ShinyTouch/OpenCV</title>
		<link>http://antimatter15.com/wp/2010/07/shinytouchopencv/</link>
		<comments>http://antimatter15.com/wp/2010/07/shinytouchopencv/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 02:01:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[also_my_second_mouse]]></category>
		<category><![CDATA[and_lets_not_forget_my_TI_84_Plus_Calculator]]></category>
		<category><![CDATA[and_my_laser_printer]]></category>
		<category><![CDATA[and_my_second_monitor]]></category>
		<category><![CDATA[ddlshack]]></category>
		<category><![CDATA[look_at_the_wiimote_on_my_desk]]></category>
		<category><![CDATA[multitouch]]></category>
		<category><![CDATA[opencv]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[touchscreen]]></category>
		<category><![CDATA[updates]]></category>
		<category><![CDATA[yay_in_totally_unrelated_news_google_sent_me_a_t-shirt]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=1194</guid>
		<description><![CDATA[I have yet to give up entirely on ShinyTouch, my experiment into creating a touch screen input system which requires virtually no setup. For people who haven&#8217;t read my posts from last year, it works because magically things look shinier when you look at it from an angle. And so if you mount a camera [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antimatter15.com/wp/wp-content/uploads/2010/07/ShinyTouch_0171.png"><img class="alignnone size-full wp-image-1196" title="ShinyTouch_017" src="http://antimatter15.com/wp/wp-content/uploads/2010/07/ShinyTouch_0171.png" alt="" width="642" height="606" /></a></p>
<p>I have yet to give up entirely on <a href="http://antimatter15.com/wp/2009/07/shinytouch-zero-setup-single-touch-surface-retrofitting-technology/">ShinyTouch</a>, my experiment into creating a touch screen input system which requires <strong>virtually no setup</strong>. For people who haven&#8217;t read my posts from last year, it works because magically things look shinier when you look at it from an angle. And so if you mount a camera at an angle (It doesn&#8217;t need to be as extreme as the screenshot above), you end up seeing a reflection on the surface of the screen (this could be aided by a transparent layer of acrylic or by having a glossy display, but as you can see, mine are matte, but they still work). The other pretty obvious idea of ShinyTouch, is that on a reflective surface, especially observed from a non-direct angle, you can see that the distance from the reflection (I guess my eighth grade science teacher would say the &#8220;virtual image&#8221;) to the apparent finger, or &#8220;real image&#8221; is twice the distance from either to the surface of the display.  In other words, the <strong>reflection gets closer to you when you get closer to the mirror</strong>. A webcam usually gives a two-dimensional bitmap of data (and one non-spatial dimension of time). This gives (after a perspective transform) the <strong>X and Y positions</strong> of the finger. But an important aspect of a touchscreen and what this technology is also capable of, a &#8220;zero-touch screen&#8221;, is a <strong>Z axis: the distance of the finger and the screen</strong>. A touchscreen has a binary Z-axis: touch or no touch. Since you can measure the <strong>distance between the apparent real finger and it&#8217;s reflection, you can get the Z-axis</strong>. That&#8217;s how ShinyTouch works.</p>
<p>Last year someone was interested and actually contributed some code. Eventually we both agreed that my code was crap so he decided to <a href="http://github.com/ddlshack/shinytouch">rewrite</a> it, this time using less PIL and pixel manipulation, and instead, opting for more OpenCV so it&#8217;s faster. The project died a bit early this year, and with nothing more to do,<a href="http://github.com/antimatter15/shinytouch"> I decided to revive it</a>. His code had some neat features:</p>
<ul>
<li>Better perspective performs</li>
<li>Faster</li>
<li>Less Buggy</li>
<li>Simpler configuration (track bars instead of key combinations and editing JSON files)</li>
<li>Yellow square to indicate which corner to click when callibrating (actually, <a href="http://github.com/ddlshack/shinytouch/commit/9df521a08c8a12e6b8d1aa58d665394faaaac10f">I wrote</a> that feature)</li>
</ul>
<p>It was left however, at a pretty unfinished state. It couldn&#8217;t do anything more than generate config files through a nice UI and doing a perspective transform on the raw video feed. So in the last few days, I added a few more features.</p>
<ul>
<li>Convert perspective-transformed code into grayscale</li>
<li>Apply a 6&#215;6 gaussian blur filter</li>
<li>Apply a binary threshold filter</li>
<li>Copy it over to PIL and shrink the canvas by 75% for performance reasons</li>
<li>Hack a Python flood-fill function to do blob detection (because I couldn&#8217;t compile any python bindings for the opencv blob library)</li>
<li>Filter those blobs (sort of)</li>
</ul>
<p>Basically, it means ShinyTouch can now do multi-touch. Though the Z-axis processing, which is really what the project is all about still sucks. Like it sucks <em>a lot</em>. But when it does work (on a rare occasion), <strong>you get multitouch</strong> (yay). If TUIO gets ported (again), it&#8217;ll probably be able to interface with all the neat TUIO based apps.</p>
<p>Code here: <a href="http://github.com/antimatter15/shinytouch/">http://github.com/antimatter15/shinytouch/</a> Please help, you probably don&#8217;t want to try it (yet).</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2010/07/shinytouchopencv/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ShinyTouch/JS</title>
		<link>http://antimatter15.com/wp/2009/08/shinytouchjs/</link>
		<comments>http://antimatter15.com/wp/2009/08/shinytouchjs/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 02:17:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[complicated]]></category>
		<category><![CDATA[elitist]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[hideous]]></category>
		<category><![CDATA[html 5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[shiny]]></category>
		<category><![CDATA[ugly]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=799</guid>
		<description><![CDATA[Yay for yet another demo that strives to mix an mash almost everything HTML5 related! ShinyTouch in JS dumps the stuff from a &#60;video&#62; tag with ogg encoded video (well, almost all video from linux is ogg encoded so it&#8217;s just whatever format i got first from cheese). It gets dumped into &#60;canvas&#62; and getImageData [...]]]></description>
			<content:encoded><![CDATA[<p>Yay for yet another demo that strives to mix an mash almost everything HTML5 related! ShinyTouch in JS dumps the stuff from a &lt;video&gt; tag with ogg encoded video (well, almost all video from linux is ogg encoded so it&#8217;s just whatever format i got first from cheese). It gets dumped into &lt;canvas&gt; and getImageData does it&#8217;s magic.</p>
<p>Interestingly, if you don&#8217;t use the video and just do data from a raw image, you get upwards of 125fps on V8. Adding the video, it ceases to work on Chromium (maybe a linux thing? <a href="http://code.google.com/p/chromium/issues/detail?id=16225">this</a> tells me it&#8217;s just linux, but you can never be so sure).</p>
<p><em>//At this point, run away as the algorithm gets messy and hackish</em></p>
<p>So the thing just searches from right to left up to down within the quad. When it finds a column of something that fits the rgb range of the finger that is larger than a certain threshold, it checks for a reflection from the point. If it detects a reflection then yay! it throws the data at the perspective warper (based on a python one which is based on a C# one and though it would probably be easier to port from C# to JS making long chains of derivative work is fun). If there wasnt a reflection then it logs that and if that number is larger than some othe rthreshold then it kills the scanning and goes on with it&#8217;s life. The reflection algorithm just takes the point 5 pixels to the right and assumes that would be a reflection if there was one and a point 15px above and 5px to the left (nasty stuff) and takes the hue value from their RGB values. It takes the absolute value of the difference of the hue values multiplied by 100 (or 200 in the python version) and compares it with a preset configuration variable.</p>
<p>So now that that horrible algorithm which was just whatever came to my little totally untrained mind first. But it works semi-decently, at least for me. But you can hopefully see how nasty it&#8217;s inner workings are and it inspires people to clean it up. It&#8217;s quite a bit more readable than the Python version and only 200 lines of JS so it won&#8217;t be <em>too</em> hard to understand.</p>
<p>But since HTML5 has no Video capture thing for webcams, and my webcam doesn&#8217;t work with flash so I can&#8217;t use that canvas&lt;-flash webcam bridge i built, uh, almost 2 years ago. So now you just get to gaze at my finger moving for like 20 seconds!</p>
<p><a href="http://antimatter15.com/misc/shiny/shinytouch.html">http://antimatter15.com/misc/shiny/shinytouch.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/08/shinytouchjs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ShinyTouch Videos</title>
		<link>http://antimatter15.com/wp/2009/08/shinytouch-videos/</link>
		<comments>http://antimatter15.com/wp/2009/08/shinytouch-videos/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 16:46:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>
		<category><![CDATA[Wave]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=793</guid>
		<description><![CDATA[The first one is shot from recordMyDesktop-gtk and the second one is from Cycorder on my iPhone.]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/DCq6tKZeoV0&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/DCq6tKZeoV0&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/fRfRQtauvc4&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/fRfRQtauvc4&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>The first one is shot from recordMyDesktop-gtk and the second one is from Cycorder on my iPhone.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/08/shinytouch-videos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Shinytouch Perspective Transform</title>
		<link>http://antimatter15.com/wp/2009/08/shinytouch-perspective-transform/</link>
		<comments>http://antimatter15.com/wp/2009/08/shinytouch-perspective-transform/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 20:25:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>
		<category><![CDATA[elitist]]></category>
		<category><![CDATA[steal]]></category>
		<category><![CDATA[transform]]></category>
		<category><![CDATA[wiimote]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=787</guid>
		<description><![CDATA[Shinytouch perspective transforms now work! One big issue with ShinyTouch is that it didn&#8217;t transform points correctly, but now it has been totally resolved by stealing this (MIT licensed) from the linux (python!) port of Wiimote Whiteboard (Johnny lee&#8217;s famous work). Now it works totally insanely awesomely, no elitists necessary.]]></description>
			<content:encoded><![CDATA[<p><strong>Shinytouch perspective transforms now work!</strong></p>
<p>One big issue with ShinyTouch is that it didn&#8217;t transform points correctly, but now it has been totally resolved by stealing <a href="http://wiiwhiteboard.cvs.sourceforge.net/viewvc/*checkout*/wiiwhiteboard/source/linux/perspective.py?revision=1.2&amp;content-type=text%2Fplain">this</a> (MIT licensed) from the linux (python!) port of Wiimote Whiteboard (Johnny lee&#8217;s famous work). Now it works totally insanely awesomely, no elitists necessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/08/shinytouch-perspective-transform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ShinyTouch is Complicated</title>
		<link>http://antimatter15.com/wp/2009/08/shinytouch-is-complicated/</link>
		<comments>http://antimatter15.com/wp/2009/08/shinytouch-is-complicated/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 11:28:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=650</guid>
		<description><![CDATA[This is a draft, and I just feel like publishing it cause I lost my train of thought. So I totally super insanely over underestimated the complexity of the ShinyTouch project. It&#8217;s actually probably one of the most complicated projects I&#8217;ve ever attempted. And if all hardware related things are really this complicated, then I [...]]]></description>
			<content:encoded><![CDATA[<p><strong>This is a draft, </strong>and I just feel like publishing it cause I lost my train of thought.</p>
<p>So I totally super insanely over underestimated the complexity of the ShinyTouch project. It&#8217;s actually probably one of the most complicated projects I&#8217;ve ever attempted. And if all hardware related things are really this complicated, then I really applaud the efforts of all those people who work on this stuff. While ShinyTouch isn&#8217;t really large code-wise (currently less than 200 lines of Python), it&#8217;s not a very simple program.</p>
<p>And though the concept can be implemented as a simple thing, you would loose a lot of accuracy. The most basic possible implementation would be to search for a color matching the range for a finger (it does in fact stick out quite a bit) by searching pixel-by pixel from right-to-left (if the camera is mounted to the right of the monitor) and it will stop once it hits the fingertip, which is the first thing of skin that the camera sees since it&#8217;s mounted at an angle. After that, you would check if the color immediately next to the point and check if it fits in a range. Then if it matches, then you fix the distortion due to perception and send it to a app through something like TUIO.</p>
<p>With that being the most simple thing possible, everything else I&#8217;ve thought of builds on the second part: the reflection detection. This part is what I&#8217;ve discovered to be the most complicated. And the complexity of it isn&#8217;t totally unexpected. This detection is really all that is truly special about this project. Without it, it&#8217;s just finger tracking, something that&#8217;s been used for tons of projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/08/shinytouch-is-complicated/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TUIO Support</title>
		<link>http://antimatter15.com/wp/2009/08/tuio-support/</link>
		<comments>http://antimatter15.com/wp/2009/08/tuio-support/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 03:17:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>
		<category><![CDATA[calibration]]></category>
		<category><![CDATA[elitist]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[tuio]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=704</guid>
		<description><![CDATA[So even though the algorithms that transform the calibration box aren&#8217;t working accurately yet, TUIO support has been made, so you can use apps like TUIO Mouse to control your computer and other touch demo things.]]></description>
			<content:encoded><![CDATA[<p>So even though the algorithms that transform the calibration box aren&#8217;t working accurately yet, TUIO support has been made, so you can use apps like TUIO Mouse to control your computer and other touch demo things.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/08/tuio-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ShinyTouch Images</title>
		<link>http://antimatter15.com/wp/2009/08/shinytouch-images/</link>
		<comments>http://antimatter15.com/wp/2009/08/shinytouch-images/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 03:15:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[calibration]]></category>
		<category><![CDATA[elitist]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[nuigroup]]></category>
		<category><![CDATA[paranoia]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=701</guid>
		<description><![CDATA[This is the app running, notice that it&#8217;s not yet been calibrated yet. Here is the auto-calibration process, it alternates between black and white This is part of Auto-Calibration. This is some stuff from the command line: This is just hovering over the screen, notice it&#8217;s not touching, and the algorithm can distinctly recognize the [...]]]></description>
			<content:encoded><![CDATA[<p>This is the app running, notice that it&#8217;s not yet been calibrated yet.</p>
<p><img src="http://www.ubuntu-pics.de/bild/20444/screenshot_012_YR3t87.png" alt="" /></p>
<p>Here is the auto-calibration process, it alternates between black and white<br />
<img src="http://www.ubuntu-pics.de/bild/20439/screenshot_011_wZ7Pn1.png" alt="" /></p>
<p>This is part of Auto-Calibration.<br />
<img src="http://www.ubuntu-pics.de/bild/20437/screenshot_005_6MQO0S.png" alt="" /></p>
<p>This is some stuff from the command line:<br />
<img src="http://www.ubuntu-pics.de/bild/20440/screenshot_007_2rbhHD.png" alt="" /></p>
<p>This is just hovering over the screen, notice it&#8217;s not touching, and the algorithm can distinctly recognize the lack of a touch because the reflection is seperated from the finger by a significant gap. (Compare the top red bar).<br />
<img src="http://www.ubuntu-pics.de/bild/20441/screenshot_006_nV186Y.png" alt="" /></p>
<p>This is a actual touch, you can see that the red bar is far larger, and it&#8217;s very distinctly a touch event.<br />
<img src="http://www.ubuntu-pics.de/bild/20442/screenshot_008_117vhL.png" alt="" /></p>
<p>There&#8217;s a draw tool and, here is a primitive drawing of a smiley. The dots come from an issue with PIL/OpenCV or something that makes the image all chopped up and sends the point to an arbitary point on the screen.<br />
<img src="http://antimatter15.com/misc/img/purty2009-07-21T19:23:30.080675.png" alt="" /></p>
<p>This is the magical sensor the whole thing is powered by: An unmodified Playstation 3 Eye on a tissue box with a pink Office Depot eraser on the back (because the camera is made tilted and the script can&#8217;t handle those tilts very well)<br />
<img src="http://www.ubuntu-pics.de/bild/20445/screenshot_013_5jru8J.png" alt="" /></p>
<p>It&#8217;s not too insanely slow either. This is 31 frames per second coming from a pure python app, all from a scripting language. It is nowhere as fast as the normal fast native apps.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/08/shinytouch-images/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ShinyTouch is 1 month old</title>
		<link>http://antimatter15.com/wp/2009/07/shinytouch-is-1-month-old/</link>
		<comments>http://antimatter15.com/wp/2009/07/shinytouch-is-1-month-old/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 21:33:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>
		<category><![CDATA[age]]></category>
		<category><![CDATA[bugfix]]></category>
		<category><![CDATA[calibration]]></category>
		<category><![CDATA[month]]></category>
		<category><![CDATA[old]]></category>
		<category><![CDATA[small]]></category>
		<category><![CDATA[videocapture]]></category>
		<category><![CDATA[winblows]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=693</guid>
		<description><![CDATA[For as long as my notes show, ShinyTouch is now 1 month old. So today, I added VideoCapture support, so it will now work better on Windows. Auto calibration has been rewritten, and a few other small changes.]]></description>
			<content:encoded><![CDATA[<p>For as long as my notes show, ShinyTouch is now 1 month old.</p>
<p>So today, I added VideoCapture support, so it will now work better on Windows.</p>
<p>Auto calibration has been rewritten, and a few other small changes.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/07/shinytouch-is-1-month-old/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ShinyTouch Auto-Calibration</title>
		<link>http://antimatter15.com/wp/2009/07/shinytouch-auto-calibration/</link>
		<comments>http://antimatter15.com/wp/2009/07/shinytouch-auto-calibration/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 03:01:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>
		<category><![CDATA[calibrate]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[surface]]></category>
		<category><![CDATA[touch]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/2009/07/shinytouch-auto-calibration/</guid>
		<description><![CDATA[A few days ago I started working on auto calibration for shinytouch. Someone worked it a bit brfire and gave some PyGTK code that did fullscreen correctly but I ended up getting too confused (especially with embedding the video and images and threading delays). So now I started from scratch (or moreover continuing with using [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I started working on auto calibration for shinytouch. Someone worked it a bit brfire and gave some PyGTK code that did fullscreen correctly but I ended up getting too confused (especially with embedding the video and images and threading delays). So now I started from scratch (or moreover continuing with using pygame) and now it is inherently not full screen. The auto calibration works by setting the contents of he window to be one color and taking a snapshot. After that the color is changes again and the snapshot is once again recorded. After gathering a pair, the software compares them pixel by pixel. It takes multiple trials and takes the average.</p>
<p>Then there is a function that makes cool stuff happen. It goes right to left to search for massive groups of consecutively marked hot pixel change areas. Ir searches for a general trapezoidal shape. And takes the lenghs and heights and positions. And right now, typing on my iPhone I wish the spell corrector was as awesome as the google wave contextual system.<br />
So in the near future, shinytouch will be as simple as launchingthe app and hitting a calibrate button and the computer does the rest. Maybe it might ask you to touch the screen in a special magic box or click on your finger afterwards but overall, zero setup and almost no calibration.<br />
So on another note, shinytouch is now almost a month old idea-wise. In my idea book, the references to it date back to June 28, though it may have originated a few days prior. For shinytouch the beginning window is quite a bit more broad. Anywhere from last year to march. I seem to recall late January experimentation with mirrors.<br />
So now,<br />
With shinytouch being the more promising (more acessible and radical) I have stalled development on mirrortouch. It&#8217;s quite annoying how fast time passes. There is so much that I really want to do but there is nost not enough time.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/07/shinytouch-auto-calibration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New ShinyTouch Reflection Recognition Ideas</title>
		<link>http://antimatter15.com/wp/2009/07/new-shinytouch-reflection-recognition-ideas/</link>
		<comments>http://antimatter15.com/wp/2009/07/new-shinytouch-reflection-recognition-ideas/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 20:55:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ShinyTouch]]></category>
		<category><![CDATA[Touchscreens]]></category>

		<guid isPermaLink="false">http://antimatter15.com/wp/?p=656</guid>
		<description><![CDATA[So the key innovation in ShinyTouch is the using of reflections to determine touches. (Sure there&#8217;s some  slight innovation with scanning the pixels in a certain way, but that&#8217;s nothing in comparison to the rest). Right now, it checks colors on only 3 pixels strategically and combines them using some ratios estimated from fresnel&#8217;s equations. [...]]]></description>
			<content:encoded><![CDATA[<p>So the key innovation in ShinyTouch is the using of reflections to determine touches. (Sure there&#8217;s some  slight innovation with scanning the pixels in a certain way, but that&#8217;s nothing in comparison to the rest). Right now, it checks colors on only 3 pixels strategically and combines them using some ratios estimated from fresnel&#8217;s equations. I must be doing some stuff wrong because it&#8217;s not reliable at all.</p>
<p>So what is reliable and practical? I think maybe just something which recognizes the general characteristics of the reflection (like looking like the actual image) shapewise could work. I dont know.</p>
<p>So i have a little notebook with tons of random sketches on ideas and equations and tiny pseudo-code algorithms to theoretically improve the detection rate.  One is basically analyzing more than teh single pixel it does now, by &#8220;measuring&#8221; the width of the reflection and matching it up with the image (and in all cases it should be equivalent). The problem is that it&#8217;s hard to measure, so I have this algorithm which I think may resolve it by comparing the value of  the pixel in question with the known point and the known non-reflection.</p>
<p>But it&#8217;s nowhere near complete, and ideas are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://antimatter15.com/wp/2009/07/new-shinytouch-reflection-recognition-ideas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->