<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10359330</id><updated>2011-07-28T03:52:14.231-07:00</updated><category term='bottom thinning'/><category term='dissertation'/><category term='drift'/><category term='Modulation Threshold'/><category term='windowing'/><category term='wiki'/><category term='workflow'/><category term='center'/><category term='bug'/><category term='Matlab'/><category term='Vision'/><category term='miscroscope'/><category term='sample rate'/><category term='Center Correction'/><category term='Report'/><category term='Fixture'/><category term='pairing'/><category term='grid'/><category term='restore'/><category term='audio'/><category term='smooth'/><category term='warp'/><category term='MItAC'/><category term='groove shape'/><category term='DNR'/><category term='depth'/><category term='mechanics'/><category term='Stereo'/><category term='Intensity'/><category term='physics'/><category term='code'/><category term='groove geometry'/><category term='Scan Speed'/><category term='unwrap'/><category term='preprocessing'/><category term='hardware'/><category term='stylus shape'/><category term='Sidewall'/><category term='restoration'/><category term='Focusing'/><category term='discontinuity'/><category term='tool'/><category term='concave'/><category term='Filtering'/><category term='Weekly Meeting'/><category term='noise reduction'/><category term='stitching'/><category term='modulation'/><category term='research methods'/><category term='CC analysis'/><category term='Experience'/><category term='undulation'/><category term='sting'/><category term='polar coordinates'/><category term='plan'/><category term='RIAA EQ'/><category term='scanning'/><category term='FOV sequence'/><category term='fitting'/><category term='stats'/><category term='differentiation'/><category term='audio extraction'/><category term='groove tracing'/><category term='backtrace'/><category term='groove traching'/><category term='sampling'/><title type='text'>Beinan's Work Log</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default?start-index=101&amp;max-results=100'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>360</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10359330.post-2306693342501707502</id><published>2010-07-28T22:47:00.001-07:00</published><updated>2010-07-28T22:47:12.751-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='stats'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><title type='text'>Plot of groove center and width and derivatives</title><content type='html'>&lt;p&gt;Each plot below contains two sub-plots of the entire view of the data and a portion of it.&lt;/p&gt;&lt;p&gt;Silence+Sine signal&lt;/p&gt;&lt;ol&gt;&lt;li&gt;raw CenterRadius: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/c.png" target="_blank"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/c.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;raw width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/w.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/w.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;CenterRadius - width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/c-w.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/c-w.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;CenterRadius + width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/c+w.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/c+w.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of (CenterRadius - width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/d(c-w).png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/d(c-w).png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of (CenterRadius + width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/d(c+w).png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/d(c+w).png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of CenterRadius: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dc.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dc.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dw.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dw.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;deriv(CenterRadius) - deriv(width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dc-dw.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dc-dw.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;deriv(CenterRadius) + deriv(width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dc+dw.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/sine/dc+dw.png&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Musical signal&lt;/p&gt;&lt;ol&gt;&lt;li&gt;raw CenterRadius: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/c.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/c.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;raw width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/w.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/w.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;CenterRadius - width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/c-w.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/c-w.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;CenterRadius + width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/c+w.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/c+w.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of (CenterRadius - width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/d(c-w).png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/d(c-w).png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of (CenterRadius + width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/d(c+w).png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/d(c+w).png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of CenterRadius: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dc.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dc.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;derivative of width: &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dw.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dw.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;deriv(CenterRadius) - deriv(width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dc-dw.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dc-dw.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;deriv(CenterRadius) + deriv(width): &lt;a href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dc+dw.png"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/music/dc+dw.png&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-2306693342501707502?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/2306693342501707502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=2306693342501707502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2306693342501707502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2306693342501707502'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/07/plot-of-groove-center-and-width-and.html' title='Plot of groove center and width and derivatives'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3414086337593651114</id><published>2010-07-27T22:02:00.001-07:00</published><updated>2010-07-27T22:02:01.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><title type='text'>True stereo samples</title><content type='html'>&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Double checked the stereo signal rendering:&lt;/p&gt;&lt;p&gt;Left channel = CenterRadius - Width&lt;/p&gt;&lt;p&gt;Right channel = CenterRadius + Width&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Silence + sine&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Stereo Silence + Sine" href="http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/stereo_silence_sine_riaa.wav" target="_blank"&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/stereo_silence_sine_riaa.wav&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Music&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;http://kakyoism.webhop.net/~kakyo/0.report/49.stereo/stereo_music_riaa.wav&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;BTW:&lt;/p&gt;&lt;p&gt;kakyo writes as　華僑 in Japanese, meaning "overseas Chinese".&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3414086337593651114?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3414086337593651114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3414086337593651114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3414086337593651114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3414086337593651114'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/07/true-stereo-samples.html' title='True stereo samples'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8299169820546949369</id><published>2010-07-27T05:54:00.001-07:00</published><updated>2010-07-27T05:54:59.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='stats'/><category scheme='http://www.blogger.com/atom/ns#' term='groove shape'/><title type='text'>Stereo vs. Groove shape</title><content type='html'>&lt;p&gt;The music and sine wave extracted last time are stereo signals, but only the lateral information was used. Depths were discarded. To incorporate depth info, however, the bottom data are in question.&lt;/p&gt;&lt;p&gt;Remember that previously we discussed about the fact that grooves in practice are "U" shaped instead of "V" shaped, so that there is no immediate 1-unit-wide bottom to use in order to derive groove depths. In other words, to be able to measure groove depth, we need to thin the bottom so that it is 1-pixel wide. This is an un-reported problem before. A few options are there:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use pure image processing thinning (our current solution)&lt;/li&gt;&lt;li&gt;At a groove cross-section, use the bottom point closest to the center of the cross-section.&lt;/li&gt;&lt;li&gt;At a groove cross-section, use the bottom point that is deepest.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These options will introduce inevitable noise because they don't consider the fact that the cutting stylus creates some correlation between the groove lateral and vertical shape parameters such as width and depth, the ratio between bottom-to-inner-edge width and bottom-to-outer-edge width, etc. If an inappropriate bottom thinning strategy is used, the overall vertical groove info may not correlate well with the lateral info and won't yield good stereo audio.&lt;/p&gt;&lt;p&gt;We now call top edges "ridges".&lt;/p&gt;&lt;p&gt;To make sure that depth information is good enough to use together with the lateral info, the  requirement includes&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Along the entire groove, the ratios between bottom-to-inner-ridge widths and bottom-to-outer-ridge-widths should be consistent, e.g., at any part of the groove, the ratio remains close to 0.98. Bottom should not be sometimes closer to inner ridge and other times outer ridge.&lt;/li&gt;&lt;li&gt;Along the entire groove, the ratios between the groove widths and depths (diff-z between ridges and bottom) should be consistent.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Currently I'm doing tests on groove shapes with raw undulation (not resampled) and resampled /fitted undulations. The tests are not over yet but the preliminary results are not so good. The thinned bottoms apparently contain a lot of noises that fail to meet the above requirements. I'll finished the tests for results from all the thinning strategies listed above and give a thorough report.&lt;/p&gt;&lt;p&gt;Sidewall slopes can provide stereo info. However, since the grooves are U-shaped (also according to Nasce's thesis) and sidewalls are missing with WLI, it is also hard to estimate the sidewall slopes with the tiny portion of the bottom, although I haven't tried.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8299169820546949369?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8299169820546949369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8299169820546949369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8299169820546949369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8299169820546949369'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/07/stereo-vs-groove-shape.html' title='Stereo vs. Groove shape'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3513040292505702899</id><published>2010-07-24T20:19:00.001-07:00</published><updated>2010-07-24T20:19:43.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dissertation'/><title type='text'>New outline for dissertaion Chapter 1 and 2</title><content type='html'>&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Previously I felt it too awkward to avoid talking about surface metrology or phonograph recording characterisitcs during the narratives of the "related works" section in Chapter 1.&amp;nbsp; After reconsidering the flow of narration, I think it would be better to keep Chapter 1 very brief and makes it only talk about research objectives and the chapter outline of the rest of the dissertation. Then reserve the true meat of the related works to Chapter 2 as literature review. It would be necessary, of course, to mention that other OAR approaches exist and the general pros of the OAR family. We then do not talk about anything further, including cons, or any more detail of the common characterisitcs of OAR as we do now.&lt;/p&gt;&lt;p&gt;The new outline of Chapter 1 and 2.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Chater 1&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;General background: One sentence definition of phonograph, the trend of digitization, and the rise of OAR, and its advantages (largely the same as the first three paragraphs that we have now)&lt;/li&gt;&lt;li&gt;Research objectives: (using general terms without touching technical detail)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Focus on stereo disc phonograph  recordings.&lt;/li&gt;&lt;li&gt;Study a specific non-contact surface metrology approach: white-light interferometry (WLI), which acquires the 3D surface information of disc recordings and save it as images.&lt;/li&gt;&lt;li&gt;Implement image processing chain to extract audio information from the surface images.&lt;/li&gt;&lt;li&gt;Evaluate the resulting audio quality.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Research contributions:&lt;ul&gt;&lt;li&gt;First to focus on stereo recordings with WLI.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Outline of the rest of the chapters&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Chaper 2&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Phonograph recording technology (Focus on stereo disc recordings)&lt;/li&gt;&lt;li&gt;Surface metrology (Focus on non-contact methods: ray-tracing, optical microscopy, confocal microscopy, WLI)&lt;/li&gt;&lt;li&gt;Existing OAR approaches &lt;br /&gt;&lt;ol&gt;&lt;li&gt;with ray-tracing (history of laser turntable that's already written)&lt;/li&gt;&lt;li&gt;with 2D imaging (Stotzer)&lt;/li&gt;&lt;li&gt;with confocal (Haber and McBride)&lt;/li&gt;&lt;li&gt;with optical microscopy (Tian)&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3513040292505702899?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3513040292505702899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3513040292505702899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3513040292505702899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3513040292505702899'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/07/new-outline-for-dissertaion-chapter-1.html' title='New outline for dissertaion Chapter 1 and 2'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6767453077849708944</id><published>2010-07-17T15:43:00.001-07:00</published><updated>2010-07-17T15:43:19.107-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='center'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Center correction for the music sample</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br/&gt;The same center correction process reported last time is performed on the music sample. Although the wavelet differentiation still introduces DC offsets to the signal, the pitch fluctuation is largely removed. &lt;br/&gt;&lt;br/&gt;Before center correction:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/47.center/audio_mitac_stereo_v2_algo23_RIAA.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/47.center/audio_mitac_stereo_v2_algo23_RIAA.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;After center correction:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/47.center/audio_mitac_stereo_v2_setup28-cca1-r3484-a0.12pi.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/47.center/audio_mitac_stereo_v2_setup28-cca1-r3484-a0.12pi.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Plan&lt;/b&gt;&lt;br/&gt;Try to fully automate the process in a coarse-to-fine way, using both magnitude and phase information of the resulting audio from each Monte Carlo center shift&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Coarse correction: Using the audio resulting from the non-corrected center info as a reference, if we sample the new center angularly with a fixed shifting radius, depending on where the Monte-Carlo test center is, some of the samples will show themselves as out-of-phase from the reference signal, while others will be in-phase; When corrected audio results from various angular positions are uniformly out-of-phase or in-phase, we know that the position of  corresponding Monte-Carlo center is far from the true center. Then by sampling in the radial dimension, we search a critical point where angular sampling gives us a mix of out-of-phase and in-phase results. The sampling resolution in this step can be very low, i.e., just a few samples will get us to the critical Monte-Carlo center.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Fine correction: We then try taking Monte-Carlo around the critical center with a higher resolution in angular and radial dimensions, and minimize the low-end spectral energy from the magnitude response of the audio results.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6767453077849708944?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6767453077849708944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6767453077849708944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6767453077849708944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6767453077849708944'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/07/center-correction-for-music-sample.html' title='Center correction for the music sample'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4187128020666750729</id><published>2010-07-13T04:52:00.001-07:00</published><updated>2010-07-13T04:52:05.874-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='center'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Disc center correction to remove wow pitch fluctuation</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br/&gt;A simple iterative center correction procedure is used:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Assume that the current disc center is off from the true center. Randomly choose N center shifts in polar coordinates: Select R radii; for each radius, evenly sampling the angle range from 0 to 2*pi. E.g., radius = 1000 : 3000 (pixels), angle = 0 : pi/8 : 2*pi.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Apply the N shifts individually to the extracted groove undulation polar coordinates and redo fitting,  downsampling, differentiation, and finally outputting the audio.&lt;/li&gt;&lt;li&gt;Examine the low-end energies (0~50Hz) of the N audio results. Find a saddle point in the sorted N energies. The shift radii, whose resulting energies that are adjacent to the saddle point, are chosen as the fine range for the next iteration. &lt;/li&gt;&lt;li&gt;Keep refining the shift radius range until a satisfying minimum low-end-energy is reached.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;If no saddle point is found, then repeat #1~4 until a limit on the iteration count is reached.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;If through #1~4 a saddle point is found, but the radius already stabilizes so that no low-end energy change is introduced over the iterations, then change the angles to try to continue fine-tune the low-end-energy.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Repeat #1~6 until the wow pitch fluctuation is lowered to undetectable.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;The result is at&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/47.center/audio_mitac_stereo_v2_cca3-rc3.684402e+02-3.014367e+03.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/47.center/audio_mitac_stereo_v2_cca3-rc3.684402e+02-3.014367e+03.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The corresponding center shift correction:&lt;br/&gt;radius: 3.0368mm (about 4.75 FOVs)&lt;br/&gt;angle: 0.1216*pi&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Plan:&lt;/b&gt;&lt;br/&gt;Use a spiral equation to fit the Cartesian coordinates in the beginning the image processing and see if the wow can be lowered before any center correction attempts.&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4187128020666750729?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4187128020666750729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4187128020666750729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4187128020666750729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4187128020666750729'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/07/disc-center-correction-to-remove-wow.html' title='Disc center correction to remove wow pitch fluctuation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-2696092580280266691</id><published>2010-06-29T21:19:00.001-07:00</published><updated>2010-06-29T21:19:17.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='center'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Archimedean spiral!!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;br/&gt;Record grooves are made mathematically with Archimedean spiral.&lt;br/&gt;&lt;br/&gt;Quote from Wikipedia&lt;br/&gt;&lt;a href='http://en.wikipedia.org/wiki/Archimedean_spiral'&gt;http://en.wikipedia.org/wiki/Archimedean_spiral&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;"The Archimedean spiral has a plethora of real-world applications. &lt;a title='Scroll  compressor' href='http://en.wikipedia.org/wiki/Scroll_compressor'&gt;Scroll compressors&lt;/a&gt;, made from two interleaved &lt;br /&gt;Archimedean spirals of the same size, are used for compressing liquids &lt;br /&gt;and gases.&lt;sup class='reference' id='cite_ref-0'&gt;&lt;a href='http://en.wikipedia.org/wiki/Archimedean_spiral#cite_note-0'&gt;&lt;span&gt;[&lt;/span&gt;1&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt; The coils of &lt;a title='Watch' href='http://en.wikipedia.org/wiki/Watch'&gt;watch&lt;/a&gt;&lt;br /&gt; &lt;a title='Balance  spring' href='http://en.wikipedia.org/wiki/Balance_spring'&gt;balance springs&lt;/a&gt; and the grooves of very early &lt;a title='Gramophone  record' href='http://en.wikipedia.org/wiki/Gramophone_record'&gt;gramophone records&lt;/a&gt; form Archimedean spirals, making the &lt;br /&gt;grooves evenly spaced and maximizing the amount of music that could be &lt;br /&gt;fit onto the record (although this was later changed to allow better &lt;br /&gt;sound quality)"&lt;br/&gt;&lt;br/&gt;--&lt;span class='citation web'&gt;Penndorf, Ron. &lt;a rel='nofollow' class='external text' href='http://ronpenndorf.com/journalofrecordedmusic5.html'&gt;"Early Development of the LP"&lt;/a&gt;&lt;span class='printonly'&gt;. &lt;a rel='nofollow' class='external free' href='http://ronpenndorf.com/journalofrecordedmusic5.html'&gt;http://ronpenndorf.com/journalofrecordedmusic5.html&lt;/a&gt;&lt;/span&gt;&lt;span class='reference-accessdate'&gt;. Retrieved 2005-11-25&lt;/span&gt;.&lt;/span&gt;&lt;span title='ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=bookitem&amp;amp;rft.btitle=Early+Development+of+the+LP&amp;amp;rft.atitle=&amp;amp;rft.aulast=Penndorf%2C+Ron&amp;amp;rft.au=Penndorf%2C+Ron&amp;amp;rft_id=http%3A%2F%2Fronpenndorf.com%2Fjournalofrecordedmusic5.html&amp;amp;rfr_id=info:sid/en.wikipedia.org:Archimedean_spiral' class='Z3988'&gt;&lt;span style='display: none;'&gt; &lt;/span&gt;&lt;/span&gt;. See the passage on &lt;i&gt;Variable &lt;br /&gt;Groove&lt;/i&gt;.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;What we can learn from the above:&lt;br/&gt;&lt;br/&gt;&lt;/b&gt;The equation in polar coordinates:&lt;br/&gt;&lt;br /&gt;&lt;dl&gt;&lt;dd&gt;&lt;img src='http://upload.wikimedia.org/math/5/7/d/57d458b61ac72a9a3100859841327baa.png' alt='\, r=a+b\theta' class='tex'/&gt;&lt;/dd&gt;&lt;/dl&gt;The inter-revolution groove spacing: 2*pi*b.&lt;br/&gt;&lt;br/&gt;So theoretically with this a priori we can estimate the center of the grooves, without physically measuring the center like we did before with the center-hole or lead-out grooves.&lt;br/&gt;&lt;br/&gt;To correct systematic errors in cutting devices, we may need some gradient-descent in the end but it would be much easier than trying to converge to the "imaginary center" blindly.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Test suites&lt;/b&gt;&lt;br/&gt;To test this idea, we can do a test suite&lt;br/&gt;1. Check the inter-revolution spacing of many grooves for the mean and variance. We can treat the distance between the edges or bottoms as the target distance. If the variance and mean together show a constant inter-groove spacing, we can go on. Otherwise we need to rethink about the mathematical abstraction. One issue with this idea is the chicken-vs-egg problem. When we test the groove spacing we need to resort to polar coordinates that we already have.&lt;br/&gt;&lt;br/&gt;2. Estimate the spiral parameters (a, and b) and eventually the center. &lt;br/&gt;&lt;br/&gt;3. Update all groove polar coordinates of our scanned data with the new center and check output signal quality.&lt;br/&gt;&lt;br/&gt;Optionally, we can do another test suite:&lt;br/&gt;Generate a sinewave based on Archimedean spiral and see if we can reproduce the low-frequency modulation in the end. And then try to estimate the original center from the wrong signal. &lt;br/&gt;&lt;br/&gt;Previously we've confirmed that generated sinewave around a perfect circle can be modified to generate the same modulation by shifting the center.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-2696092580280266691?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/2696092580280266691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=2696092580280266691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2696092580280266691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2696092580280266691'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/06/archimedean-spiral.html' title='Archimedean spiral!!'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7382691842013819675</id><published>2010-06-28T23:19:00.001-07:00</published><updated>2010-06-28T23:19:55.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noise reduction'/><category scheme='http://www.blogger.com/atom/ns#' term='DNR'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Better smoothing</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Using piece-wise polynomial fit on the raw groove edge undulation then using a wavelet differentiator shows better smoothing result than any other combinations we tried before, e.g., moving-average on undulation then differentiation.&lt;br/&gt;&lt;br/&gt;The local result on same signal segment shown last week&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/46.smooth/wavelet_smooth.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/46.smooth/wavelet_smooth.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Audio (Sinewave)&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/46.smooth/audio_mitac_stereo_v2_algo23_NORIAA.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/46.smooth/audio_mitac_stereo_v2_algo23_NORIAA.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It's not clear yet how exactly a wavelet differentiator smoothed the noisy signal out, but it works much better than moving-averaing on raw signal (radii of the groove edges). From the literature I read about, wavelet differentiators have reputations for better noise reduction performance. &lt;br/&gt;&lt;br/&gt;I also got what delta-sigma modulation roughly does. It uses pulses (bit-stream) with fixed-voltage and pulse-width, but vary the pulse-spacing, e.g., use denser pulses for weaker signal. By "oversampling", i.e., extremely dense bit-stream, the weaker signal gets a smaller quantization noise than using vertical quantization.&lt;br/&gt;&lt;br/&gt;Assuming that our scanned 1kHz sinewave groove undulation is encoded by delta-sigma undulation, and the noise level is one pixel, then because peak-to-dip duration contains about 200 points under 10X magnification (1um/pixel resolution), then the DNR = 20log10(200/1) ~= 46dB. If the noise level is 0.5 pixel, then DNR ~= 52dB. &lt;br/&gt;&lt;br/&gt;The reported analog 78RPM systems have 30 ~ 40dB DNR; LP systems &lt;br /&gt;have around 60dB.&lt;br/&gt;Stotzer's system provides about 19dB DNR  for &lt;br /&gt;78rpm and 16dB for LP.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Plan&lt;/b&gt;&lt;br/&gt;Start working on center-correction to remove the low-frequency modulation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7382691842013819675?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7382691842013819675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7382691842013819675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7382691842013819675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7382691842013819675'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/06/better-smoothing.html' title='Better smoothing'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4915358705973417180</id><published>2010-06-16T20:55:00.000-07:00</published><updated>2010-06-16T20:56:05.069-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dissertation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Dissertation Chapter 1 outline</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;In order not to waste any time on writing unapproved content in detail, I'd like to have a mid-level outline of my dissertation chapters before diving into the actual writing. I hope that  I can have an idea whether the following structure and points make sense and make adjustments at the mid-level. Once this list is confirmed, I'll start expanding these ideas into real text.&lt;br/&gt;&lt;br/&gt;Chapter 1 The McGill Image to Audio Conversion Project&lt;br/&gt;&lt;br /&gt;1.1 Introduction&lt;br/&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Phonograph recording/playback technology in one sentence.&lt;/li&gt;&lt;li&gt;Social background and significance of creating the technology of&lt;br /&gt;the dissertation: Records are dying and need to be preserved;&lt;br /&gt;international authorities and communities care about this. Quote&lt;br /&gt;Langnois project proposal.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Digital archiving as the major solution to problem introduced in&lt;br /&gt;#2: Pros (reliability; mature technology) and cons(Time cost; quality&lt;br /&gt;issues).&lt;/li&gt;&lt;li&gt;Origin of the MItAC project: idea; rough procedure. Briefly mention optical audio reconstruction efforts.&lt;br/&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;Advantages learned from the above rough procedure: Contact-less; capability to restore damaged records.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Advantages summarized in bullet list.&lt;/li&gt;&lt;li&gt;Objectives derived from the advantage list, each objective seeks to explore and elaborate one or more advantages.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Briefly mention the hardware (closely related to the advantages).&lt;/li&gt;&lt;li&gt;Indicate that the dissertation mainly deals with which objectives.&lt;/li&gt;&lt;li&gt;The significance of the dissertation (To elaborate the thesis proposal): First in the world to deal with stereo LPs, with white-light interferometry (WLI) and using 3D groove profile. &lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;1.2 Objectives of the thesis&lt;br/&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Because the use of the specific imaging system (WLI microscope)&lt;br /&gt;is unprecedented, the objectives include describing hardware system and&lt;br /&gt;how it is applied to replace phonography. As a result we'll also talk&lt;br /&gt;about phonography in next chapter.&lt;/li&gt;&lt;li&gt;Theoretical perspectives on system limitations, resolution, sampling rate, dynamic range, etc.&lt;/li&gt;&lt;li&gt;Image processing algorithms: stitching; groove extraction; noise reduction and restoration.&lt;/li&gt;&lt;li&gt;The high-level objectives of the audio extraction tasks:&lt;br /&gt;reconstruct a stereo test signal (silence + sine wave, and a music&lt;br /&gt;signal) at a quality/time trade-off scanning resolution.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;1.3 Related works&lt;br/&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Existing efforts to optically reconstruct audio: Laser turntable&lt;br /&gt;(several models), Haber, Stotzer, Tian, (optional: McBride), with high&lt;br /&gt;level categorization: Optical stylus, 2D digital imaging, 3D method.&lt;/li&gt;&lt;li&gt;Core image processing techniques: connected-component-analysis, edge detection.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;1.4 Summary of dissertation&lt;br/&gt;&lt;br /&gt;chapter-by-chapter description, each in one sentence.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4915358705973417180?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4915358705973417180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4915358705973417180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4915358705973417180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4915358705973417180'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/06/dissertation-chapter-1-outline.html' title='Dissertation Chapter 1 outline'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7152464576571125490</id><published>2010-06-15T05:39:00.000-07:00</published><updated>2010-06-15T05:40:27.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='noise reduction'/><category scheme='http://www.blogger.com/atom/ns#' term='smooth'/><title type='text'>Results of various smoothing methods and interpolation</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;span style='font-weight: bold;'&gt;Summary&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Various smoothing and resampling methods were tried.&lt;/li&gt;&lt;li&gt;Haber's piece-wise polynomial shows the smoothest fitted undulation.&lt;/li&gt;&lt;li&gt;None of the tried methods can yield smooth differentiated signal (radial velocity). This may be due to the off-center problem, e.g., the segment of sine wave shown below are all slanted due to the wrong radius, leading to  differentiation errors.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style='font-weight: bold;'&gt;Detail&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Graphs shown here are the result of smoothing/resampling on about one cycle of sine wave.&lt;br/&gt;&lt;br /&gt;The original images that contains the corresponding edge undulation is here:&lt;br/&gt;&lt;br /&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/edge-fov2-rcie665-293-4-2-sub97-539-upward-rightward.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/edge-fov2-rcie665-293-4-2-sub97-539-upward-rightward.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Original raw signal, linear interpolation&lt;br/&gt;&lt;br /&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/org_resample_linear.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/org_resample_linear.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Graphs and links are shown in the following manner: &lt;br/&gt;&lt;br /&gt;a) Undulation before and after smoothing, panorama&lt;br/&gt;&lt;br /&gt;b) Same signal as a), zoomed-in&lt;br/&gt;&lt;br /&gt;c) Smoothed signal before and after resampling and differentiation&lt;br/&gt;&lt;br /&gt;d) Sound&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style='font-weight: bold;'&gt;Smooth by moving average, linear interpolation&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;Window size: 5 (samples)&lt;br/&gt;&lt;br /&gt;a)  &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win5_panorama.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win5_panorama.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;b) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win5_zoom.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win5_zoom.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win5_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win5_resample.png&lt;/a&gt; &lt;br/&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_malr_win5.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_malr_win5.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Window size: 9 (samples)&lt;br/&gt;&lt;br /&gt;a) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win9_panorama.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win9_panorama.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;b) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win9_zoom.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win9_zoom.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win9_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win9_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_malr_win9.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_malr_win9.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Window size: 15 (samples)&lt;br/&gt;&lt;br /&gt;a) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win15_panorama.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win15_panorama.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;b) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/malr_win15_zoom.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/malr_win15_zoom.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/masr_win15_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/masr_win15_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_malr_win15.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_malr_win15.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style='font-weight: bold;'&gt;Smooth by moving average, spline interpolation&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;Window size: 15 (samples)&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/masr_win15_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/masr_win15_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_masr_win15.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_masr_win15.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Smooth by lowpass filtering, linear interpolation&lt;br/&gt;&lt;br /&gt;Cut-off frequency: 12kHz&lt;br/&gt;&lt;br /&gt;a) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc12k_panorama.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc12k_panorama.png&lt;br/&gt;&lt;br /&gt;&lt;/a&gt;b) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc12k_zoom.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc12k_zoom.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc12k_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc12k_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_lplr_fc12000.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_lplr_fc12000.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Cut-off frequency: 8kHz&lt;br/&gt;&lt;br /&gt;a) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc8k_panorama.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc8k_panorama.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;b) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc8k_zoom.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc8k_zoom.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc8k_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc8k_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_lplr_fc8000.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_lplr_fc8000.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Cut-off frequency: 2kHz&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;a) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc2k_panorama.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc2k_panorama.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;b) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc2k_zoom.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc2k_zoom.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/lplr_fc2k_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/lplr_fc2k_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_lplr_fc2000.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_lplr_fc2000.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style='font-weight: bold;'&gt;Spline fit and analytical differentiation on raw signal&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/spline_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/spline_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_spline_ana_diff.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_spline_ana_diff.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style='font-weight: bold;'&gt;Polynomial fit and analytical differentiation on raw signal&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/poly_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/poly_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;d) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/audio_mitac_stereo_v2_poly_ana_diff.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/audio_mitac_stereo_v2_poly_ana_diff.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style='font-weight: bold;'&gt;Haber's method on raw signal&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/haber_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/haber_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style='font-weight: bold;'&gt;Haber's method on smoothed signal, Window size 15 (samples)&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;c) &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/45.smooth/haber_smooth_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/45.smooth/haber_smooth_resample.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7152464576571125490?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7152464576571125490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7152464576571125490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7152464576571125490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7152464576571125490'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/06/results-of-various-smoothing-methods.html' title='Results of various smoothing methods and interpolation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-209116208826702442</id><published>2010-06-10T20:06:00.000-07:00</published><updated>2010-06-10T20:07:25.816-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noise reduction'/><category scheme='http://www.blogger.com/atom/ns#' term='DNR'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Dynamic Range</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Dynamic Range&lt;/b&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;What is dynamic range? Dynamic Range(DNR) measures the ratio between the greatest un-distorted signal and the smallest detectable signal which is usually the average noise level, usually in dB. In the analog-to-digital conversion system. The noise is often assumed to be quantization noise. Since the quantization noise corresponds to a level of integer 1, 16bit CD's dynamic range is about 20log10(2^16 / 1) ~= 96dB.&lt;/li&gt;&lt;li&gt;In the case of LP, DNR is related to peak velocity of the turn-table. According to this [[book chapter|&lt;a href='file:///C:/Users/kakyo/Documents/3.mitac/doc/wiki/wiki.html'&gt;http://www.st-andrews.ac.uk/~www_pa/Scots_Guide/iandm/part12/page2.html&lt;/a&gt;]], "An output signal is produced which is proportional to the instantaneous radial velocity of the stylus. The signal is recorded in the shape of the groove surfaces, or ‘walls’". The radial velocity of the stylus v(t) = dx(t)/dt + dr/dt ~= kdx(t)/dt, where dr/dt is a constant rate of stylus moving inwards in a spiral towards the disc center, and x(t) the radial displacement from the center of the groove's silence position. In the case of sine wave as reference signal, whose level is proportional to the electric voltage, x(t) = A sin(2*pi*f*t). The velocity is then dx(t)/dt = 2*pi*f*A*cos(2*pi*f*t). The peak velocity corresponds to the highest signal level. &lt;/li&gt;&lt;li&gt;In our testLP case, where peak velocity is 7cm/sec, frequency is 1kHz, signal level at 0dB, the peak spatial amplitude is then A_peak = 7 / (2*pi*1000Hz) ~= 11.14um.&lt;/li&gt;&lt;li&gt;In the context of equivalent quantization error in a analog turntable, let delta_x represent the smallest stylus movement step that can generate electric signal difference. Then DNR = 20log10(2*A_peak / delta_x).&lt;/li&gt;&lt;li&gt;In our scanned images, under 10x magnification, where spatial resolution about 1um/pixel, the signal peak amplitude corresponds to about 27.5 pixels. If quantization error is 1 pixel, then DNR = 20log10(2 * 11.14 / 1) ~= 27dB. If quantization error is taken as 0.5 pixel, then DNR = 33 dB. Our signal actually contains greater noise (&amp;gt; 1 pixel fluctuation) just by taking into account the stings introduced by dusts. If delta_x = 3 pixel, then DNR ~= 17dB.&lt;/li&gt;&lt;li&gt;The reported analog 78RPM systems have 30 ~ 40dB DNR; LP systems have around 60dB.&lt;/li&gt;&lt;li&gt;Stotzer's system provides about 19dB DNR  for 78rpm and 16dB for LP.&lt;/li&gt;&lt;/ol&gt;Noise reduction&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Moving average may not be the right way to smooth out LP signal. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Moving average take into account every edge points under our resolution. Given the noisy nature of local undulation, from my trying of 3~10pixel window moving average, the resulting signal was still noisy.&lt;/li&gt;&lt;li&gt;If we imagine the way stylus moves, the contact surface of stylus with the groove edge is of a certain linear width, denoted as W corresponding to, say N points. As the stylus move across the groove, only the innermost edge points Pi, Pi+k, i+k &amp;lt; N. will get into contact with the stylus surface, while all the others are ignored. So the averaging here is not a moving average of every points across the contact dimension of the stylus. &lt;/li&gt;&lt;/ul&gt;Plan&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Our DNR is pretty low although close to Stotzer's system. So maybe we should lower our expectation under 10X magnification about the signal-noise ratio. We can also measure the theoretical DNR of the music signal we have as a side note.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Try smoothing undulation with the stylus-inspired scheme.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-209116208826702442?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/209116208826702442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=209116208826702442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/209116208826702442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/209116208826702442'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/06/dynamic-range.html' title='Dynamic Range'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6740901242392761601</id><published>2010-06-05T12:09:00.001-07:00</published><updated>2010-06-05T12:09:32.811-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNR'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Dyanmic range and quantization error</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Previously we confirmed that the pitch fluctuation in the output audio was due to center estimation errors.&lt;br/&gt;&lt;br /&gt;Tried a couple of low-pass filtering and moving average before&lt;br /&gt;resampling the signal, none of which can effectively remove noise&lt;br /&gt;without degrading audio quality. This brought to my mind that maybe the&lt;br /&gt;theoretical dynamic range (DNR) and signal-noise-ratio (SNR) of the&lt;br /&gt;signals scanned under 10x magnification was never enough in the first&lt;br /&gt;place.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;I'll research into this problem and report in the next blog update.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6740901242392761601?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6740901242392761601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6740901242392761601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6740901242392761601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6740901242392761601'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/06/dyanmic-range-and-quantization-error.html' title='Dyanmic range and quantization error'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4423586792752092556</id><published>2010-05-31T17:48:00.000-07:00</published><updated>2010-05-31T17:48:00.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='center'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Confirmed that center estimation error can cause the pitch fluctuation similar to what we heard.</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ul&gt;&lt;li&gt;In order to confirm that center error can cause the pitch fluctuation that is present in our previous extracted audio signals, a simulation is done to reproduce the problem using a generated sine wave.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;Simulation steps&lt;br/&gt;&lt;ol&gt;&lt;li&gt;In this simulation we assume that the grooves are in perfect circles instead of spirals.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Create a 1kHz sinewave of which the duration equals one revolution of LP signal (1.8 seconds), at the estimated sampling rate from our scanned raw images (1MHz). &lt;br/&gt;&lt;/li&gt;&lt;li&gt;On top of the sinewave, add a DC offset to the signal to simulate introducing the average radius of the revolution to the entire signal. The radius used here is 13.2cm. The spatial dynamic range of the sinewave used here is 0.027mm (according to the stats of our test sine wave).&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Resample the signal at 48kHz and differentiate. The output, the clean signal, is here: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/44.center_error_sim/sine_input_48khz.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/44.center_error_sim/sine_input_48khz.wav&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Now, if we shift the center by 3mm x 1mm, and then repeat #4, the output signal is here: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/44.center_error_sim/sine_center_shift_48kHz.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/44.center_error_sim/sine_center_shift_48kHz.wav&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;Synopsis&lt;br/&gt;&lt;ul&gt;&lt;li&gt;As we can see/hear in the results, the output signal from the shifted center shares the same qualitative feature with the sine wave extracted from the scanned images. &lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;Plan&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Do another simulation to reproduce the crackles based on a generated sinewave in the similar manner. &lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4423586792752092556?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4423586792752092556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4423586792752092556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4423586792752092556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4423586792752092556'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/05/confirmed-that-center-estimation-error.html' title='Confirmed that center estimation error can cause the pitch fluctuation similar to what we heard.'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8375562165218411377</id><published>2010-05-29T20:13:00.001-07:00</published><updated>2010-05-29T20:13:02.800-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='RIAA EQ'/><title type='text'>RIAA EQ improves audio</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Audio result using spline differentiation:&lt;/b&gt;&lt;br/&gt;The music sample without RIAA EQ reproduction filter:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo7_music.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo7_music.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The music sample processed with RIAA EQ reproduction filter:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo14_RIAA.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo14_RIAA.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Audio result using wavelet differentiation&lt;/b&gt;&lt;br/&gt;The music sample generated with wavelet differentiation after resampling, without RIAA EQ:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo15.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo15.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The signal generated with RIAA EQ&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo15_RIAA.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/43.RIAA_EQ/audio_mitac_stereo_v2_algo15_RIAA.wav&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Signals above are all resampled to 48kHz. &lt;br/&gt;&lt;br/&gt;As we can notice, the crackle noise is not reduced using spline differentiation, but the musical signal's spectral balance is restored after applying RIAA reproduction EQ. Using wavelet differentiation is somehow similar to apply a low-pass filtering (the non-EQ'ed version), after applying the RIAA reproduction filter, the output signal's spectral balance can be heard as not restored, still sounds like low-passed. &lt;br/&gt;&lt;br/&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br/&gt;Wavelet differentiation offers better crackle-noise reduction, but it is unknown yet how to counteract its strong low-pass effect.&lt;br/&gt;&lt;br/&gt;Other differentiation methods are more susceptible to crackle noise (local signal noise) but maintain the spectral balance. &lt;br/&gt;&lt;br/&gt;&lt;b&gt;Question&lt;/b&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Which way do we go: wavelet or regular differentiation?&lt;/li&gt;&lt;li&gt;Can we derive the equivalent filter spec that the wavelet differentiation introduces?&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8375562165218411377?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8375562165218411377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8375562165218411377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8375562165218411377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8375562165218411377'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/05/riaa-eq-improves-audio.html' title='RIAA EQ improves audio'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8075977883901431847</id><published>2010-05-24T15:19:00.000-07:00</published><updated>2010-05-24T15:29:45.696-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Audio rendering from undulation</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Previously we focused on extracting audio from the 2D groove undulation of a 1kHz sinewave, i.e., the radius of the groove edges to the disc center, and found that &lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;ol&gt;&lt;li&gt;The data contains lots of noises.&lt;/li&gt;&lt;li&gt;The signal do not appear to be fluctuating around the horizonal&lt;br /&gt;axis, i.e., not centered to the 0-DC component. It includes a&lt;br /&gt;time-varying DC offset that brings the entire signalup above or down below horizontal asis.  &lt;/li&gt;&lt;li&gt;The resulting sine signal has periodically varying pitch around the expected 1kHz component.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;The processing steps involved for extracting audio from undulation (order unclear)&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;ol&gt;&lt;li&gt;Resampling the undulation at a fixed lower sampling rate&lt;/li&gt;&lt;li&gt;Differentiation against time&lt;/li&gt;&lt;li&gt;Possible filtering&lt;/li&gt;&lt;li&gt;Stereo decoding&lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;We had theories about the above problems that &lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;ol&gt;&lt;li&gt;The noise may be from extracted groove undulation under the&lt;br /&gt;extremely high resolution. The imperfect local groove shape then gets&lt;br /&gt;amplified by differentiation. In other words, they are likely ignored&lt;br /&gt;when played with the phonograph stylus.&lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;#1.1 and 1.3 may be from the error in disc center estimation which caused the periodic fluctuation in the group envelope of the extracted undulation.&lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;A few questions about the above problems were not addressed&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;ol&gt;&lt;li&gt;What are the noises? Are they gaussian or signal-related? Are&lt;br /&gt;they from the slight (1-2 pixels) discontinuity at the boundaries of&lt;br /&gt;stitched FOVs or  just signal-related?&lt;/li&gt;&lt;li&gt;How would DC offset applied to an audio signal affect its perceived pitches?&lt;/li&gt;&lt;li&gt;Can we find a model of the center estimate error  and counteract the error by imposing a compensation based on this model?&lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;We decided to address #3.1 first and leave the pitch-fluctuation aside till later.&lt;/li&gt;&lt;li&gt;Last week, the order of the steps listed in #2 and the parameters setup of each individual step were investigated. Some questions from #4 were answered:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;The noises are not white noises and sound like crackles. From&lt;br /&gt;filtering tests, they are signal-related broad band noises that can&lt;br /&gt;cover the entire audible bandwidth.The noises can be reproduced by extracting a small subset of undulations (1 or 2 FOVs) and repeat them. &lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;The noises cannot be suppresed by using simple moving-average&lt;br /&gt;filtering alone, before or after the signal gets resampled or&lt;br /&gt;differentiated. &lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;The visible time-varying DC offset we saw previously, which&lt;br /&gt;shows itself as a snake across the 3-second sinewave group amplitude,&lt;br /&gt;was introducedby the wavelet differentiator that I used all along, not by the center estimate error. The DC offset itself doesn't &lt;br /&gt;cause the pitch fluctuation, although the fluctuation should still be&lt;br /&gt;caused by center estimation error. It's just that the big snake we saw&lt;br /&gt;is not the visual representation of the audible signal frequency&lt;br /&gt;fluctuation. &lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;When using numerical differentiation by definition (dy/dx), there is no DC offset.&lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;The crackle noises can be suppressed by using the same wavelet-based differentiator before resampling, but&lt;br /&gt;due to some bugs the output audio is at a wrong sampling rate and&lt;br /&gt;longer -than-expected signal (3 sec =&amp;gt; 24 sec), which I need to&lt;br /&gt;figure out how.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Details&lt;br/&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Tried a few combinations of the processing sequence in Summary #2. The only combination that can remove the crackes is as described in #7. See Details #2.2&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Tried differentiation by definition and a couple of models under the wavelet framework.&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Differentiation by definition does not introduce DC offset, but is susceptible to noise and contains pitch fluctuation. [See figure below].&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Global audio signal view: &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/diff_by_def_after_resample_global.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/diff_by_def_after_resample_global.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A portion of the same signal: &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/diff_by_def_after_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/diff_by_def_after_resample.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Audio (48kHz): &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo7.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo7.wav&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Stick in a lowpass before resampling does not help suppress&lt;br /&gt;the noise (tried cut-off frequency at 2kHz). The differentiation still&lt;br /&gt;amplifies them to the audible degree.&lt;br/&gt;&lt;br /&gt;      &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;According to papers such as &lt;a href='http://www3.interscience.wiley.com/journal/108069161/abstract?CRETRY=1&amp;amp;SRETRY=0'&gt;this one,&lt;/a&gt; wavelet differentiator offers better noise suppression among existing numerical differentiators, especially under low SNR. [See result below]&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Global audio signal view: &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/diff_by_wavelet_before_resample_global.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/diff_by_wavelet_before_resample_global.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A portion of the same signal: &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/diff_by_wavelet_before_resample.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/diff_by_wavelet_before_resample.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Audio (48kHz): &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12.wav&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Audio (384kHz): &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12-384khz.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12-384khz.wav&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;li&gt;Tried #2 on the music signal&lt;/li&gt;&lt;ol&gt;&lt;li&gt;With differentiation by definition, Audio (48kHz), no sampling rate error, DC offset, but with pitch fluctuation and noises: &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo7_music.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo7_music.wav&lt;/a&gt;&lt;/li&gt;&lt;li&gt;With wavelet differentiation, Audio (48kHz): sampling rate error: &lt;a target='_blank' href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12_music.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12_music.wav&lt;/a&gt;&lt;/li&gt;&lt;li&gt;With wavelet differentiation, Audio (144kHz): sampling rate error after trial and error, the signal length is the closest to the expected: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12_music-144khz.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/42.audio_diff/audio_mitac_stereo_v2_algo12_music-144khz.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Tried resampling with linear and polynomial interpolation. Doesn't make an audible difference.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Tried zero-phase and regular low-pass filtering. Zero-phase filtering introduce DC-offset, regular low-pass filtering is very unstable.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Tried moving average filtering in time-domain. Doesn't help unless we use wavelet differentiator before resampling.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Plan&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I haven't found how to fix he visible DC offset and the sampling rate error  introduced by the wavelet differentiator.&lt;br /&gt;The quality and side-effect of numerical differentiation are said to be&lt;br /&gt;highly problem specific. So I'll dig into the numerical differentiatora little deeper with basic tests and also check out the Stotzer's solution. In a week, I should be able to get it right. &lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8075977883901431847?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8075977883901431847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8075977883901431847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8075977883901431847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8075977883901431847'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/05/audio-rendering-from-undulation.html' title='Audio rendering from undulation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5875338925397650724</id><published>2010-05-11T02:30:00.001-07:00</published><updated>2010-05-11T02:30:37.355-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Problem with resample and differentiation</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Previously differentiated groove undulation of sine wave look good, however,&lt;br/&gt;the entire differentiated signal shows low-frequency radius modulation and reflects in the resulting sound.&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;Audio (left, right channel by inner/outer differentiated radius)&lt;br/&gt;&lt;br /&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/41.wrong_diff/audio_mitac_stereo_v2.wav'&gt;http://kakyoism.webhop.net/~kakyo/0.report/41.wrong_diff/audio_mitac_stereo_v2.wav&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Plot of left channel stereo (Silence), not scaled according to the right&lt;br /&gt; x-y size ratio&lt;br/&gt;&lt;br /&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/41.wrong_diff/diff_silence.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/41.wrong_diff/diff_silence.png&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Plot of right channel stereo (1kHz Sine), not scaled according to the &lt;br /&gt;right&lt;br /&gt; x-y size ratio&lt;br/&gt;&lt;br /&gt;&lt;b&gt;Warning: This may not make much sense to eyes, just as a reference&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/41.wrong_diff/diff_sine.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/41.wrong_diff/diff_sine.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;There are two possible causes:&lt;br/&gt;1. This differentiation was done with Order 1 (every neighboring samples). There could be local errors here and there. But this doesn't explain well the fact that the error shows an overall trend of a low-frequency component.&lt;br/&gt;2. The cause can be the disc center estimation error, which leads to the periodic error curve in the polar coordinates of the grooves. Haber tried to solve the similar problem by modelling the disc center with a sine-based center correction function. I may need to try that. &lt;b&gt;However, this means to spend about 1-2 days on each try because the coordinates and groove edges are going to be regenerated.&lt;/b&gt; We need to think of better ways.&lt;br/&gt;&lt;br/&gt;The clicks in the signal can be seen in the plotted differentiated signal. They can probably be filtered out with an additional low-pass filter. But I will delay this step until I solve the problem above.&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5875338925397650724?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5875338925397650724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5875338925397650724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5875338925397650724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5875338925397650724'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/05/problem-with-resample-and.html' title='Problem with resample and differentiation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6888536562530482133</id><published>2010-05-04T06:49:00.000-07:00</published><updated>2010-05-04T06:53:30.311-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sting'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Differentiation result after removing stings</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Our sting removal algorithm resulted in improved sine signal after flattening and differentiation.&lt;br/&gt;&lt;br/&gt;Previous result:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov632-368-3-2-fov631-369-4-2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov632-368-3-2-fov631-369-4-2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Result after removing stings&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/40.flatten_nosting/nosting-undu-fov632-368-3-2_631-369-4-2_diff.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/40.flatten_nosting/nosting-undu-fov632-368-3-2_631-369-4-2_diff.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;FOVs involved&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/40.flatten_nosting/edge-fov1-rcie632-368-3-2-sub57-564-upward-rightward.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/40.flatten_nosting/edge-fov1-rcie632-368-3-2-sub57-564-upward-rightward.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/40.flatten_nosting/edge-fov2-rcie631-369-4-2-sub31-479-upward-rightward.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/40.flatten_nosting/edge-fov2-rcie631-369-4-2-sub31-479-upward-rightward.png&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6888536562530482133?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6888536562530482133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6888536562530482133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6888536562530482133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6888536562530482133'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/05/differentiation-result-after-removing.html' title='Differentiation result after removing stings'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8038574035051030185</id><published>2010-04-27T00:05:00.001-07:00</published><updated>2010-04-27T00:05:39.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='sting'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Sting removal solution</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;ol&gt;&lt;li&gt;Previously we found that irregular groove edges would cause significant distortion in the differentiation phase of audio extraction. They therefore have to be cleaned up beforehand.&lt;/li&gt;&lt;li&gt;About 12 algorithms were tried, and a relatively good-enough solution was found.&lt;/li&gt;&lt;li&gt;Basic idea: Detect radius differences that represent skewing of groove shape symmetry, which is derived from stylus shape, and then shift the offensive edge points towards the direction that would restore the symmetry.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Fact: Radius differences of edge series measured at a distance corresponds to the location of the "stings". An optimal difference interval can be found, which ensures that the stings show sufficient distinction in the FOV-local edge series. Under our current settings (10X magnification), 10-point-interval makes the sting location most obvious. Intervals smaller or greater than 10 show less promises. See figures below:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Groove edge with a convex sting: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/edge-sting-r669-c245-i1-e2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/edge-sting-r669-c245-i1-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Radius difference at interval 3: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-3.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-3.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Interval 5: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-5.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-5.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Interval 7: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-7.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-7.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Interval 10:&lt;/b&gt; &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-10.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-10.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Interval 15: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-15.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-15.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Interval 20: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-20.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/radiusdiff-fov669-245-1-2_difforder-20.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;As seen in the above figures, intervals below 10 give less obvious radius difference for stings, yet those higher than 10 start to show great difference across the signal range. 10 gives the best signal-to-noise ratio.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;According to my experiement, it is rather difficult to to wipe off all the stings in one pass along a groove edge series. After a lot of trial-and-errors, the final solution is a recursive algorithm contains three major step:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Remove any overlapped pixels at each azimuth. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Detect stings by measuring radius difference a large azimuthal interval (default to 10 points), treat the detected locations of significant radius discontinuity as stings, recursively remove the front one and remeasure until no new stings are detected.&lt;/li&gt;&lt;li&gt;Perform post-processing radius-diff at interval 1 to smooth out possible remaining edge irregularities.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;About #5.2, look at the edges as flattened 1D signal. Because the start and/or end of the target diff interval usually lie somewhere in the middle of the sting-part of the signal but not exactly the opening or the closing point so that we don't know , we then adjust the edge point's radius so that the updated radius diff at the same interval gets down to the median level of the groove in the FOV, that is, to "wipe it flat". Note, we also linearly flatten the points within the interval when the slope is detected.&lt;/li&gt;&lt;li&gt;Because each detected interval correspondes to a radius ramp. In order to minimize the difference in such an interval, it's necessary to have a reference point and shift the other points against the reference point. However, both convex and concave irregularities can be seen in the edge. The relation between reference and target and the shifting direction thus can become quite complicated. We thus introduce the groove shape, i.e., the symmetry nature of its left/right half, as heauristics on the shifting of edge points for restoring the grooves. Assume the left/right half of the groove cross-section are of a constant ratio across a local range and a sting tends to distort such a symmetry. Then any shifting that can reduce the distortion to the symmetry is good. Note that this only serves as a sanity check after a shifting iteration, not main heuristics, because this feature relies on three noisy signal: inner edge, outer edge and the bottom, and thus less accurate than the radius difference of either edge.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;We also make sure we don't re-visit what's alrady processed.&lt;/li&gt;&lt;li&gt;Example of sting and fixed groove edges&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Before fixing: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i1-e2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i1-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.1: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/usting-354-502-1-2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/usting-354-502-1-2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.3: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/sting-354-502-1-2-fix.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/sting-354-502-1-2-fix.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Another example&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Before fixing: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i3-e1.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i3-e1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.1: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/usting-354-502-3-1.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/usting-354-502-3-1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.3: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/sting-354-502-3-1-fix.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/sting-354-502-3-1-fix.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Another example&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Before fixing: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i3-e2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i3-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.1: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/usting-354-502-3-2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/usting-354-502-3-2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.3: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/sting-354-502-3-2-fix.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/sting-354-502-3-2-fix.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Another example&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Before fixing: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i5-e1.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/edge-Stings%20before%20fixing-r354-c502-i5-e1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.1: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/usting-354-502-5-1.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/usting-354-502-5-1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After #5.3: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/sting-354-502-5-1-fix.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/sting-354-502-5-1-fix.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Groove symmetry feature of the groove in Example 10 and 11: &lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/39.remove_sting/centroid-rci354-502-3.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/39.remove_sting/centroid-rci354-502-3.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The next step would be to perform resampling and differentiation after fully applying this to the grooves before they are flattened.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8038574035051030185?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8038574035051030185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8038574035051030185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8038574035051030185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8038574035051030185'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/04/sting-removal-solution.html' title='Sting removal solution'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3880944613175531056</id><published>2010-04-15T20:33:00.001-07:00</published><updated>2010-04-15T20:33:12.384-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sting'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Remove radial overlap caused by sting on grooves</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Previously, tiny bumps on groove edges could result in quite visible distortion in differentiated flattened groove radii. One source of error is in that edge detection could collect points around the stings so that wrong points are taken into account and made the signal longer than it really is. As in &lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/37.flatten_sine/edge-fov1-r632-c368-i3-e2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/37.flatten_sine/edge-fov1-r632-c368-i3-e2.png&lt;/a&gt;&lt;br/&gt;The result of differentiation&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov632-368-3-2-fov631-369-4-2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov632-368-3-2-fov631-369-4-2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;These wrong points overlap in azimuth with the valid edge points. A simple treatment is then applied to the same image to remove the overlapped points: At each azimuth location of outer edge, reserve inner most edge point and for inner edge, outermost point. This way we ensure at teach azimuth, only one point is reserved. The result is immediately improved:&lt;br/&gt;Raw flattened radius:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/38.remove_sting/undu-fov632-368-3-2_631-369-4-2_radius_arc.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/38.remove_sting/undu-fov632-368-3-2_631-369-4-2_radius_arc.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Differentiated signal:&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/38.remove_sting/undu-fov632-368-3-2_631-369-4-2_diff.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/38.remove_sting/undu-fov632-368-3-2_631-369-4-2_diff.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The source FOV treated after sting-removal&lt;br/&gt;&lt;a href='http://kakyoism.webhop.net/%7Ekakyo/0.report/38.remove_sting/edge-fov1-r632-c368-i3-e2.png'&gt;http://kakyoism.webhop.net/~kakyo/0.report/38.remove_sting/edge-fov1-r632-c368-i3-e2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;This method is probably useful only to small stings, with larger bumps as in the same image. More sophisticated filtering should be used. Under investigation.&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3880944613175531056?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3880944613175531056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3880944613175531056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3880944613175531056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3880944613175531056'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/04/remove-radial-overlap-caused-by-sting.html' title='Remove radial overlap caused by sting on grooves'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7922510397146246784</id><published>2010-04-13T14:10:00.001-07:00</published><updated>2010-04-13T14:10:53.196-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Flattened and differentiated sine from testLP</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;The stereo sine signal scanned last is processed with our improved workflow. The sine channel is differentiated and looks smoother than what we had for ISMIR. I haven't tried to resample the signal before getting any opinions about the data.&lt;br/&gt;&lt;br/&gt;Flattened groove of the sine wave (1kHz, 3.286 sec ~= 1.826 rounds)&lt;br/&gt;Inner edge (silence&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/undulation_radius_arc-fov668-281-2-1-fov524-45-6-1.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undulation_radius_arc-fov668-281-2-1-fov524-45-6-1.png&lt;br/&gt;&lt;/a&gt;&lt;br/&gt;Outer edge (sine)&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/undulation_radius_arc-fov668-281-2-2-fov524-45-6-2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undulation_radius_arc-fov668-281-2-2-fov524-45-6-2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;First 0.003 sec (about 3 periods for 1kHz), outer edge only &lt;br/&gt;Flattened signal&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/undulation_radius_arc-fov634-365-4-2-fov633-367-3-2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undulation_radius_arc-fov634-365-4-2-fov633-367-3-2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Differentiated signal (dx = 1, using a wavelet differentiator: http://www.mathworks.com/matlabcentral/fileexchange/13948-numerical-differentiation-based-on-wavelet-transforms)&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov634-365-4-2-fov633-367-3-2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov634-365-4-2-fov633-367-3-2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;First 0.01 sec&lt;br/&gt;Flattened signal&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/undulation_radius_arc-fov634-365-4-2-fov629-373-2-2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undulation_radius_arc-fov634-365-4-2-fov629-373-2-2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Differentiated signal&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov634-365-4-2-fov629-373-2-2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov634-365-4-2-fov629-373-2-2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The corresponding FOVs to the 0.01 sec signal&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov1-r634-c365-i4-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov2-r634-c366-i2-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov3-r633-c366-i5-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov4-r633-c367-i3-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov5-r632-c368-i3-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov6-r631-c369-i4-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov7-r631-c370-i2-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov8-r630-c370-i5-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov9-r630-c371-i3-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov10-r629-c372-i4-e2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov11-r629-c373-i2-e2.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;The differentiated signal is scaled by 1000 to be well visible; the raw magnitude is about 0.15 (pixel).&lt;br/&gt;Note that the distortion around 6.6~6.7x10^4 looks like this&lt;br/&gt;Raw signal&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov1-r632-c368-i3-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undulation_radius_arc-fov632-368-3-2-fov631-369-4-2.png&lt;/a&gt;&lt;br/&gt;Differentiated signal&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov1-r632-c368-i3-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/undudiff_radius_arc-fov632-368-3-2-fov631-369-4-2.png&lt;/a&gt;&lt;br/&gt;Corresponding FOV&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/37.flatten_sine/edge-fov1-r632-c368-i3-e2.png'&gt;http://132.206.14.194/~kakyo/0.report/37.flatten_sine/edge-fov1-r632-c368-i3-e2.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Looks like minor defect in raw signal could cause larger effect in differentiated signal.&lt;br/&gt;So some filtering/resampling may be desired. Will try that later.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7922510397146246784?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7922510397146246784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7922510397146246784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7922510397146246784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7922510397146246784'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/04/flattened-and-differentiated-sine-from.html' title='Flattened and differentiated sine from testLP'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5258862805588037486</id><published>2010-04-04T20:51:00.001-07:00</published><updated>2010-04-04T20:51:37.811-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='unwrap'/><title type='text'>Against what do we do fitting and differentiation on a signal?</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;In the last report, the x-axis that is used in radii-vs.-arc plots are wrong because multiplying angle with radius does not necessarily reflect correct time interval between consecutive data points as in the time-series of the recorded audio signal. The distortion introduced by using this arc as x-axis can cause the output signal to look time-reversed as in this plot:&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/undulation_radius_arc_reverse.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/undulation_radius_arc_reverse.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It is crucial to derive the correct time intervals along the inward spiral of the groove. Without the correct time intervals we cannot resample the groove at correct audio rates.&lt;br/&gt;&lt;br/&gt;Because the disc playback ensures that angular velocity is constant at all times, the angular progression can be seen as a reliable representation of the time progression. Fitting/Differentiating against the angles is the way to go. Previous approach by arc was wrong.&lt;br/&gt;&lt;br/&gt;However, to plot the signal with correct scaling of x-axis and y-axis, i.e., by radii-vs.-arc, an average radius should be plotted aginast for each revolution instead of simply the multiplication of radii and angles point by point. The corrected radii-vs.-arc plot of the entire signal looks like this:&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/undulation_radius_arc_correct.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/undulation_radius_arc_correct.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5258862805588037486?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5258862805588037486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5258862805588037486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5258862805588037486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5258862805588037486'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/04/against-what-do-we-do-fitting-and.html' title='Against what do we do fitting and differentiation on a signal?'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-9199537176889004329</id><published>2010-04-03T20:37:00.001-07:00</published><updated>2010-04-03T20:37:28.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='backtrace'/><category scheme='http://www.blogger.com/atom/ns#' term='unwrap'/><title type='text'>Flattened 1D groove undulation signal</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Below are from a segment of flattened groove undulation signal and the original groove edges in images.&lt;br/&gt;Entire inner-edge undulation,  radii vs. arc: &lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/undulation_radius_arc.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/undulation_radius_arc.png&lt;/a&gt;&lt;br/&gt;Same signal, radii vs. arc: &lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/undulation_raw_radius.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/undulation_raw_radius.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Radii of a segment of signal (0.044007 ~ pi/45), radii vs. arc: &lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/undulation_radius_arc_part.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/undulation_radius_arc_part.png&lt;/a&gt;&lt;br/&gt;Same signal, with radii vs. data-point number:&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/undulation_raw_radius_part.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/undulation_raw_radius_part.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Corresponding FOVs to the segment (in the order of their appearance in the output signal)&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/edge-fov1-r313-c118-i4-e1.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/edge-fov1-r313-c118-i4-e1.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/edge-fov2-r313-c119-i4-e1.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/edge-fov2-r313-c119-i4-e1.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/36.flatten/edge-fov3-r313-c120-i4-e1.png'&gt;http://132.206.14.194/~kakyo/0.report/36.flatten/edge-fov3-r313-c120-i4-e1.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;Note that in the FOVs, &lt;br/&gt;&lt;ol&gt;&lt;li&gt;The bounded red lines are the edges that are extracted. &lt;/li&gt;&lt;li&gt;For this segment of signal, the disc center is far above the image, i.e., those are the inner edges of the groove.&lt;/li&gt;&lt;li&gt;The selected segment starts in the middle of FOV #1 and ends in the middle of FOV #3.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;FOV #2, and #3 look like they are missing the front part. It's because the edges are initially overlapped and are pieced together in pairs in the output signal. After calibration, the overlap part of the latter one in a pair is discarded.&lt;/li&gt;&lt;/ol&gt;In the entire signal:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;There seems to be some error in the radii-vs-arc plot: There are visible signal overlap along the arc axis, which means the points are not exactly consecutive in time. But this could also be all fine because plotting this way will have the points all squeazed in a narrow figure.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-9199537176889004329?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/9199537176889004329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=9199537176889004329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9199537176889004329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9199537176889004329'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/04/flattened-1d-groove-undulation-signal.html' title='Flattened 1D groove undulation signal'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8666240556616147085</id><published>2010-03-30T22:58:00.000-07:00</published><updated>2010-03-30T23:03:28.355-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='unwrap'/><title type='text'>Resampling problem</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;ol&gt;&lt;li&gt;After groove unwrapping, we now have "flattened" 1D signals from images. The equivalent sampling rate of the signal is usually much higher than industrial standard; also, due to the incompatibility between arbitrary groove orientation and matrix pixel rasteration, the signal cannot be seen as  sampled at a constant rate across its range. The next step in our process would be to resample the signal at a constant audio sampling rate.&lt;/li&gt;&lt;li&gt;Previously I didn't test my resampling algorithm on signals other than the scanned data. A test on a generated sine wave showed that my previous algorithm yields seriously wrong result.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;1. Input: http://132.206.14.194/~kakyo/0.report/35.resample/poly_order1/_test_fit_in.png&lt;/li&gt;&lt;li&gt;Output: polynomial fit with order-1: http://132.206.14.194/~kakyo/0.report/35.resample/poly_order1/_test_fit_out.png&lt;/li&gt;&lt;li&gt;order 2: http://132.206.14.194/~kakyo/0.report/35.resample/poly_order2/_test_fit_out.png&lt;/li&gt;&lt;li&gt;order 4: http://132.206.14.194/~kakyo/0.report/35.resample/poly_order4/_test_fit_out.png&lt;/li&gt;&lt;li&gt;spline: 2 http://132.206.14.194/~kakyo/0.report/35.resample/spline/_test_fit_out.png&lt;/li&gt;&lt;li&gt;The problem was that previously we resample only locally with a tiny window and we performed fitting for each window. It iterates across one pixel each time.&lt;/li&gt;&lt;li&gt;Standard resampling algorithms in Matlab seem to give better but still very inaccurate result, especially on variable-samplingrate signals.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;See http://132.206.14.194/~kakyo/0.report/35.resample/resample/_test_fit_in.png&lt;/li&gt;&lt;li&gt;and the output http://132.206.14.194/~kakyo/0.report/35.resample/resample/_test_fit_out.png&lt;/li&gt;&lt;li&gt;Local fitting will see each segment of linear signal, so that lower order fitting will give as better result.&lt;/li&gt;&lt;li&gt;Matlab resampling algorithm needs to know raw input sampling rate for the specified segments.&lt;/li&gt;&lt;li&gt;Need to investigate more about resampling methods for our ask.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8666240556616147085?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8666240556616147085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8666240556616147085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8666240556616147085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8666240556616147085'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/03/resampling-problem.html' title='Resampling problem'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4354102146168691395</id><published>2010-03-22T21:15:00.001-07:00</published><updated>2010-03-22T21:15:34.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='pairing'/><title type='text'>bottom thinning</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;ol&gt;&lt;li&gt;The raw groove bottom extracted is an narrow band of pixels, i.e., 2D. A single-pixel-wide 1D signal needs to be extracted from it.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Previously, bottom thinning was done after groove unwrapping and before resampling at audio rate. This was done by analyzing groove cross-section and treating either center or lowest points of the groove as the real bottom position.&lt;/li&gt;&lt;li&gt;A major drawback in this approach was that errors would be introduced when extracting groove cross-section along groove orientation from the image. Due to the fact that groove orientations are usually not aligned with matrix-based image pixel rasteration, in general, trying to extract cross-section by finding inner/outer edge point pair from the raw image would introduce error, whichever resampling technique is used.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;I think the fair way in the context of our overall approach is to apply a viable 2D image thinning to get the 1D single-pixel bottom, in the same sense as we perform edge extraction to extract 1D undulation of inner and outer groove. Then the resampling can be performed to the 3 1D signals. Only after the three signals are at the same sampling rate can we analyze cross-section of the groove.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4354102146168691395?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4354102146168691395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4354102146168691395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4354102146168691395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4354102146168691395'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/03/bottom-thinning.html' title='bottom thinning'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6023403912260134225</id><published>2010-03-15T23:27:00.001-07:00</published><updated>2010-03-15T23:27:40.238-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='center'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='unwrap'/><title type='text'>Major error in disc center.</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;After edge extraction, we did phase unwrapping and groove unwrapping. For this 9 seconds of musical signal scanned in 2007, unfortunately, a major error in disc center estimation can be seen in extracted edges of individual FOVs, as shown in&lt;br/&gt;&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/34.merge_edge/undu_seg1_rcie313-118-4-1_313-119-4-1_eq.png'&gt;http://132.206.14.194/~kakyo/0.report/34.merge_edge/undu_seg1_rcie313-118-4-1_313-119-4-1.png&lt;/a&gt;&lt;br/&gt;and&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/34.merge_edge/undu_seg1_rcie313-118-4-1_313-119-4-1_eq.png'&gt;http://132.206.14.194/~kakyo/0.report/34.merge_edge/undu_seg1_rcie313-118-4-1_313-119-4-1_eq.png&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The FOV is supposed to be at the 6 o'clock position and thus should have been nearly horizontal given the small FOV (0.6 x 0.4 mm), however, after scaling the axis in correct units (both in pixel), it appears to be nearly vertical.&lt;br/&gt;&lt;br/&gt;Another image will show things more clearly. &lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/34.merge_edge/wrong_center.png'&gt;http://132.206.14.194/~kakyo/0.report/34.merge_edge/wrong_center.png&lt;/a&gt;&lt;br/&gt;The figure shows the result of differentiating neighboring points' absolute arc lengths calculated from a common start of the scanned signal. Theoretically we should have seen nearly constant positive value. Now there are large portion of negative values, meaning along the audio signal time-line, there are "time-warps". This error most probably came from wrongly estimated disc center. &lt;br/&gt;&lt;br/&gt;It's unknown why the center estimation was so off for this scanned disc. One solution to this is to assume the inner-most revolution is nearly silence and measure the pattern in the radii fluctuation for this cases, and finally interpolate based on empirical results of the center.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=c8bfe830-10cd-8638-b59d-c5347615332a' alt=''/&gt;&lt;/div&gt; &lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=06ba98bd-546d-8f0c-a2d1-cdc5198b2eac' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6023403912260134225?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6023403912260134225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6023403912260134225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6023403912260134225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6023403912260134225'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2010/03/major-error-in-disc-center.html' title='Major error in disc center.'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7688968239963812131</id><published>2009-11-24T04:40:00.001-08:00</published><updated>2009-11-24T05:03:37.164-08:00</updated><title type='text'>Material for meeting (will be explained during meeting)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noblob-cc.png"&gt;&lt;img style="cursor: pointer; width: 933px; height: 700px;" src="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noblob-cc.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noblob-ho.png"&gt;&lt;img style="cursor: pointer; width: 933px; height: 700px;" src="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noblob-ho.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noattach-cc.png"&gt;&lt;img style="cursor: pointer; width: 933px; height: 700px;" src="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noattach-cc.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noblob-btm.png"&gt;&lt;img style="cursor: pointer; width: 933px; height: 700px;" src="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/noblob-btm.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/linkbtm-btm.png"&gt;&lt;img style="cursor: pointer; width: 933px; height: 700px;" src="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/linkbtm-btm.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/seg-overlapper-4-1.png"&gt;&lt;img style="cursor: pointer; width: 1067px; height: 800px;" src="http://132.206.14.194/%7Ekakyo/0.report/33.preproc/seg-overlapper-4-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7688968239963812131?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7688968239963812131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7688968239963812131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7688968239963812131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7688968239963812131'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/11/material-for-meeting-will-be-explained.html' title='Material for meeting (will be explained during meeting)'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7283031794616102694</id><published>2009-11-18T05:11:00.001-08:00</published><updated>2009-11-18T05:11:38.046-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='preprocessing'/><title type='text'>Deadline met: Finished new preprocessing</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Context&lt;br/&gt;&lt;ul&gt;&lt;li&gt;After stitching is complete, groove images need Preprocessing before edge-detection can be used for extracting undulation. &lt;/li&gt;&lt;li&gt;Preprocessing generally contains the following steps&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Remove noises, i.e. false groove CCs contained by groove-spacing CCs).&lt;/li&gt;&lt;li&gt;Detach attached grooves (by connecting the groove-spacing CCs contained by the groove CCs).&lt;/li&gt;&lt;li&gt;Re-connect broken grooves.&lt;/li&gt;&lt;li&gt;Re-connect broken groove bottoms.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Our previous algorithm was not robust enough in the detaching step. It worked well on the sine-wave disc but the the other music disc. This turned out to be due to the fact that the presence of continuous groove bottoms had been an implicit prerequisite. &lt;/li&gt;&lt;/ul&gt;Solution&lt;br/&gt;&lt;ul&gt;&lt;li&gt;The workflow is adjusted to connect broken groove bottoms before doing detaching and reconnecting.&lt;/li&gt;&lt;li&gt;This is a re-write because previously, we rely on context created by the detached/re-connected grove images, but now we will have to re-connect much thinner bottoms with less references. &lt;/li&gt;&lt;li&gt;We perform a two-pass approach to re-connect broken bottoms:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In the 1st pass, we check broken bottoms that overlap in radius, treat them as in the same goove and connect them. &lt;/li&gt;&lt;li&gt;In the 2nd pass, we check broken bottoms that do not overlap in radius, but are close enough in direction and distance, and connect them.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;After we know that all bottoms are continuous, we examine the FOV and see if there are any groove CCs containing more than one bottom; if so then the groove CC is an attached one. We then reconnect the CCs in between these two btttom.&lt;/li&gt;&lt;/ul&gt;Result&lt;br/&gt;&lt;ul&gt;&lt;li&gt;No time for uploading images, but the new algorithm works much more robust the previous ones. &lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;New Weekly Task with Deadline&lt;br/&gt;&lt;ul&gt;&lt;li&gt;By the same time next week, I will make sure that the module of edge detection (after our preprocessing) should work.&lt;/li&gt;&lt;li&gt;If the above goal is met, then go on to make sure that the module of collect FOV chain for groove unwrapping should work, i.e., given a starting FOV and groove revolution, the program should be able to go along the groove revolution across correct FOV and groove segments in that FOV untill the groove ends at the boundary of scanned data.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=823bf5ab-5566-824d-b206-7a7c35597861' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7283031794616102694?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7283031794616102694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7283031794616102694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7283031794616102694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7283031794616102694'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/11/deadline-met-finished-new-preprocessing.html' title='Deadline met: Finished new preprocessing'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6353929163482459599</id><published>2009-10-12T12:10:00.001-07:00</published><updated>2009-10-12T12:10:54.748-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='grid'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>stitching gap problem solved</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;The previous stitching gap caused by asynchronous sub-grid stitching is solved by hard micro-correction of FOV positions in the offensive sub-grid, by:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;At the end of 1st-run of grid stitching, detect boundary row gap between the last pair of grids. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;micro_correction = gap / number_of_rows_of_upper_grid&lt;/li&gt;&lt;li&gt;for each FOV in the upper grid, FOV_position += micro_correction.&lt;/li&gt;&lt;/ol&gt;In our case, the micro-correction for each row is about 0.22 by 0.07 pixel&lt;br/&gt;&lt;br/&gt;After this, all images are meshed in a visually correct manner.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=6eb70462-ffd9-8497-8681-9755529c5876' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6353929163482459599?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6353929163482459599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6353929163482459599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6353929163482459599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6353929163482459599'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/10/stitching-gap-problem-solved.html' title='stitching gap problem solved'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5543439421303196879</id><published>2009-10-05T20:49:00.000-07:00</published><updated>2009-10-05T21:27:13.465-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='grid'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>Back to Square One...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JDks8GZN8kI/Ssq_-B2-h9I/AAAAAAAAAW0/UOpjJFl56Vc/s1600-h/grids.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 275px;" src="http://3.bp.blogspot.com/_JDks8GZN8kI/Ssq_-B2-h9I/AAAAAAAAAW0/UOpjJFl56Vc/s400/grids.png" alt="" id="BLOGGER_PHOTO_ID_5389330976474040274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/SsrALicpWDI/AAAAAAAAAW8/ll0dNGi2fwE/s1600-h/stitch-cache667_282-668_282.png"&gt;&lt;img style="cursor: pointer; width: 296px; height: 400px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/SsrALicpWDI/AAAAAAAAAW8/ll0dNGi2fwE/s400/stitch-cache667_282-668_282.png" alt="" id="BLOGGER_PHOTO_ID_5389331208560269362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JDks8GZN8kI/SsrBvM-aGJI/AAAAAAAAAXE/20uHkOy-iIo/s1600-h/stitch-cache667_221-668_221.png"&gt;&lt;img style="cursor: pointer; width: 294px; height: 400px;" src="http://3.bp.blogspot.com/_JDks8GZN8kI/SsrBvM-aGJI/AAAAAAAAAXE/20uHkOy-iIo/s400/stitch-cache667_221-668_221.png" alt="" id="BLOGGER_PHOTO_ID_5389332920783214738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JDks8GZN8kI/Ssq_vQkbGTI/AAAAAAAAAWs/r_50YcxJv78/s1600-h/stitch-cache668_276-669_276.png"&gt;&lt;img style="cursor: pointer; width: 270px; height: 400px;" src="http://1.bp.blogspot.com/_JDks8GZN8kI/Ssq_vQkbGTI/AAAAAAAAAWs/r_50YcxJv78/s400/stitch-cache668_276-669_276.png" alt="" id="BLOGGER_PHOTO_ID_5389330722724714802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;According to this two-weeks' work, and quantitative tests,&lt;br /&gt;I corrected some former stitching bugs but ended up proved that systematic errors do exist in greedy image registrations and it seems no way to conquer without using a DP-like constraints or dynamic error correction along the way. See above images, in the top-down order,&lt;br /&gt;&lt;ol&gt;&lt;li&gt;the grid of the scanned FOVs around the disc label,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the stitching result of the last two rows of Grid3, &lt;/li&gt;&lt;li&gt;the stitching result of the last row of Grid-2 and the first row of Grid-4,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the result of stitching the last row of Grid-3 and the first row of Grid-4.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The inter-grid stitching was in the order of&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Grid-1 vs. Grid-2 (top vs. left)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Grid-1 vs. Grid-3 (top vs. right)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Grid-2 vs. Grid-4 (left vs. bottom)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Exchanging #2 and #3 would cause the similar gap between the last row of Grid-2 and the first row of Grid4.&lt;br /&gt;&lt;br /&gt;According to my stats of stored shifts, (I saved all the shifts between each stitching sub-process), when measuring the inter-row shifts within a grid, such shifts in Grid-2 and Grid-3 have a total discrepancy of&lt;br /&gt;131.3538 pixels vertically, and -7.6996 pixels horizontally. This total gap averages to vertical-error of 0.1972 pixel/consecutive-row-pair,  and horizontal-error of -0.0116 pixel/consecutive-row-pair. For most image registration results, there are no visible gap until the bottom row-pair shown above.&lt;br /&gt;&lt;br /&gt;Given such a small mean-error of inter-row results, tweaking FOV-pair image registration with the same greedy-process probably wouldn't lead to a better result. One possible solution to this is to introduce a rule-based correction stage after inter-row stitching for the grid on the left/right side of the disc label:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Measure total row-shifts of left/right grids after intra-grid stitching.&lt;/li&gt;&lt;li&gt;If there are discrepancy between both grids, go to the next step.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Treat rows that shift most as rows that generate most inter-row error.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Compensate the errors between left/right grids by setting up a series of anchor-rows,  compare the discrepancy in between each of these ranges, and finally apply inverted shifts according to the average error to FOV-rows that exceed custom shift threshold. &lt;/li&gt;&lt;/ol&gt;The proposed solution is pretty ad-hoc, but the idea is to at least fill the gap, thus permits us to have continuous groove unwrapping.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5543439421303196879?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5543439421303196879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5543439421303196879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5543439421303196879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5543439421303196879'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/10/back-to-square-one.html' title='Back to Square One...'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_JDks8GZN8kI/Ssq_-B2-h9I/AAAAAAAAAW0/UOpjJFl56Vc/s72-c/grids.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5981058839128476074</id><published>2009-09-22T05:30:00.001-07:00</published><updated>2009-09-22T05:30:15.885-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>stuck at stitching/alignment logic</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;total_shift(fov) =  intrarow_shift(fov) + interrow_shift(fov)&lt;br/&gt;&lt;br/&gt;interrow_shift = junc shift = pair_shift(junc, junc_up) + total_shift(junc_up) - intrarow_shift(junc)&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=a60b6150-5d1c-8576-9d3d-abb66dbf1a47' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5981058839128476074?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5981058839128476074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5981058839128476074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5981058839128476074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5981058839128476074'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/09/stuck-at-stitchingalignment-logic.html' title='stuck at stitching/alignment logic'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3886051769098895908</id><published>2009-09-16T20:50:00.001-07:00</published><updated>2009-09-16T20:50:27.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drift'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><category scheme='http://www.blogger.com/atom/ns#' term='unwrap'/><title type='text'>A big mistake in my previous judgement about stitching</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;In my new round of experiment, I refactored my stitching code and found that there was some bug in my code that caused the previous "huge gap" near the end row of the scanned grid. It turned out that even the raw unaligned data were not that far off. There really shouldn't be any gap between the images after the entire alignment, in a usual case.&lt;br/&gt;&lt;br/&gt;I'm still in the middle of fixing the bug, but at least now it's clear that Dynamic Programming should be unnecessary under our experiment setup. This is a big relief. I'm so glad that I didn't rush to implement the DP version of stitching.&lt;br/&gt;&lt;br/&gt;It is also clear that, during the later groove unwrapping, it's not the responsibility of the unwrapping module to do any 2D alignment, only vertical alignment needs to be done. All 2D misalignment should be corrected in the initial alignment.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=141812c2-24c5-8160-a69b-746d6e252c82' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3886051769098895908?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3886051769098895908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3886051769098895908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3886051769098895908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3886051769098895908'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/09/big-mistake-in-my-previous-judgement.html' title='A big mistake in my previous judgement about stitching'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6407670265190856539</id><published>2009-08-29T13:42:00.001-07:00</published><updated>2009-08-29T13:42:45.194-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>Why do we need to work on initial stitching instead of simply correcting the unwrapping radial shifting error</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ol&gt;&lt;li&gt;We previously talked about an obvious error about moving radially the edges during unwrapping.&lt;/li&gt;&lt;li&gt;This turns out to be a hard problem to correct in the unwrapping phase, because&lt;/li&gt;&lt;ol&gt;&lt;li&gt;In the unwrapping phase, we've lost the single image and work along the rings of tertiary edges (inner/outer/bottom).&lt;/li&gt;&lt;li&gt;To correct individual alignment of them has to affect all the other ones that used to be in the same iamge. &lt;/li&gt;&lt;li&gt;This is equal to doing an edge based alignment in the first place.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Therefore, we better do a 2-pass alignment in the beginning.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=a143243f-759e-8fa4-93be-f3a3679699f2' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6407670265190856539?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6407670265190856539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6407670265190856539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6407670265190856539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6407670265190856539'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/08/why-do-we-need-to-work-on-initial.html' title='Why do we need to work on initial stitching instead of simply correcting the unwrapping radial shifting error'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-9128554541903138394</id><published>2009-08-29T13:20:00.001-07:00</published><updated>2009-08-29T13:20:09.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>Stitch with edges</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Edge-based registration has a big problem when used on groove images: in the edge image, there is usually too little data in the overlap region (groove valley bad-data becomes dominant in edge images), and thus cripples the cross-correlation process.&lt;/li&gt;&lt;li&gt;A solution may be a 2-pass algorithm&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Area-based cross-correlation.&lt;/li&gt;&lt;li&gt;Do edge detection.&lt;/li&gt;&lt;li&gt;Use custom heuristics: Match the edges on image boundary between two images, using custom rules such as "if 4 out 5 edge pairs are off by 3 pixles, then we translate one of them back to minimize such offset."&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=bc24a213-3ad6-88d6-ad97-a6473b3b3ddd' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-9128554541903138394?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/9128554541903138394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=9128554541903138394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9128554541903138394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9128554541903138394'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/08/stitch-with-edges.html' title='Stitch with edges'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-554104512850780098</id><published>2009-08-24T23:23:00.001-07:00</published><updated>2009-08-24T23:23:59.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='discontinuity'/><category scheme='http://www.blogger.com/atom/ns#' term='drift'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>Image Alignment revisit</title><content type='html'>&lt;p&gt;Summary&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Read some more surveys of image registration techniques, although I’ve read a few reviews of image registration/stitching literature.&lt;/li&gt;    &lt;li&gt;The previous mentioned image registration accumulated errors, which may have caused the wrong groove width/depth ratio stats, should be eliminated before groove unwrapping. That’s to say, during unwrapping, it’s unreasonable to perform any 2D-translation type of pixel manipulation because we are solely in polar system.&lt;/li&gt;    &lt;li&gt;Therefore, image alignment should give reliable results before groove unwrapping.&lt;/li&gt;    &lt;li&gt;According to the surveys, area-based methods, e.g., cross-correlations and frequency-domain counter parts, are best suited to images suffered from translation-only deformations. In our case, the disc fixture ensures that we have translation only deformation, no rotation or other types of disturbance. So we should stick to what we have chosen, area-based cross-correlation. &lt;/li&gt;    &lt;li&gt;However, image intensity based cross-correlation could be refined with edge-based cross-correlation, but in our problem domain, its effect is unknown; tests are needed.&lt;/li&gt;    &lt;li&gt;Our problem domain makes it hard to create quantized alignment error metrics. Visual assessment is by far the most useful standard. With edge-based matching, we may come up with something useful.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Plan&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Try edge-based registration right after CC analysis as a fine-level registration.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-554104512850780098?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/554104512850780098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=554104512850780098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/554104512850780098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/554104512850780098'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/08/image-alignment-revisit.html' title='Image Alignment revisit'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1103684383461600315</id><published>2009-07-28T05:45:00.001-07:00</published><updated>2009-07-28T05:45:02.308-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drift'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>scanning progress</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Finished scanning the Mahler Symphony 7 segment with 20X.&lt;/li&gt;&lt;li&gt;Scanning the lead-out groove with the same setting on the same disc (for double checking center)&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Prepare to scan the previous Mahler with 20X, hopefully our last batch.&lt;/li&gt;&lt;li&gt;Drift detected, under 20X, something I haven't thought of before now becomes clear: the stage drifts and the center location changes every once in a while (of course!!). Therefore, during image alignment although we aligned individual images, the center remains the initial values, this appratently creates wrong polar coordinates for all FOVs scanned after the stage drifts. See Detail.&lt;/li&gt;&lt;/ol&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;How the center drift was detected:&lt;/b&gt; It was detected during the latest scan, in which the disc was divided into 6 parts. Since the center was calculated from 3 sample points on the leadout groove in the first place, I went back to check these three points when Part 6 was finished, in the intensity window under 20X, there was about 1/4 20X FOV size visible drift (Note, such drift can only be detected with eyes), i.e., ~= 0.08 x 0.06. mm. So we can realize that when scanning across different divisions of a grid, drifts like this happens all the time to FOVs and center as well. Therefore, aligning FOVs without sync the center during the course will produce wrong poloar coordinates. &lt;/li&gt;&lt;li&gt;&lt;b&gt;How bad the drift per FOV:&lt;/b&gt; For a 20X scan of over 10,000 FOVs, such accumulated error is at sub-micron level per FOV.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Solution: &lt;/b&gt;There may be a need to reserve a calibration FOV in the grid and periodicly rescan it during the whole process, e.g., between sub-grids, and derive drift data out of it to provide metadata to image alignment, and determine the center location for the sub-grid.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Optionally, &lt;/b&gt;we can "correct" our polar coordinate calculation in favor of this finding: record drifts during alignment for each FOV; then when calculating polar coordinates, shift the center according to these drifting data for each FOV.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=d8997d2d-2264-8d3e-ae2b-781d271b77c5' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1103684383461600315?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1103684383461600315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1103684383461600315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1103684383461600315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1103684383461600315'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/scanning-progress.html' title='scanning progress'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-2044778788980476091</id><published>2009-07-12T14:24:00.001-07:00</published><updated>2009-07-12T14:25:12.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='modulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><category scheme='http://www.blogger.com/atom/ns#' term='pairing'/><title type='text'>Hard decision to make: groove unwrapping</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="font-family:sans-serif;"&gt;Summary&lt;br /&gt;&lt;/span&gt; &lt;ol&gt;&lt;li&gt;The bug that caused the wrong depth/width data is found &lt;span style="font-weight: bold;"&gt;in theory. &lt;/span&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;It turns out to be a problem in the alignment of edges while unwrapping grooves:&lt;br /&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Remember we tried to correct image misalignment by pixel-level image registration as the first step of the whole image process. This initial alignment inevitably leaves thin misalignment that leads to tiny gaps in 3D between edges from consecutive FOVs.&lt;/li&gt;&lt;li&gt;Such gaps need to be finely aligned in the 2D Cartesian system as in Step #1.&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;However, after converting Cartesian system to polar system, I wrongly used only radius for registration of edges, assuming the shifts are all in the radial direction. This is clearly wrong. The realignment should be in the same way as in the pixel-level, i.e., in 2D, except that this time we will have to use the edge continuity as a constraint in our registration.&lt;br /&gt;   &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;We could also modify our initial pixel-level alignment to become a content-aware version, using all CC's edge alignment to ensure the high-quality in the first alignment. &lt;/li&gt;&lt;li&gt;Now it's a hard decision to make between #2.3 and #3. One thing for sure, is local greedy alignment with the help of some simple constraints are very likely to fail.&lt;br /&gt; &lt;/li&gt;&lt;/ol&gt;   &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-2044778788980476091?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/2044778788980476091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=2044778788980476091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2044778788980476091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2044778788980476091'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/hard-decision-to-make-groove-unwrapping.html' title='Hard decision to make: groove unwrapping'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1983812500750277735</id><published>2009-07-11T15:54:00.001-07:00</published><updated>2009-07-11T15:56:31.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='discontinuity'/><category scheme='http://www.blogger.com/atom/ns#' term='depth'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><category scheme='http://www.blogger.com/atom/ns#' term='unwrap'/><title type='text'>Bug detected in groove unwrapping</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Analysis&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Previous depth gap prooves to be a bug again in my unwrapping algorithm.&lt;br /&gt; &lt;/li&gt;&lt;li&gt;There is an unfortunate dilemma in groove unwrapping (FOV alignment)&lt;/li&gt;&lt;ol&gt;&lt;li&gt;The goal of unwrapping is to connect and align edges. But why do we align again?&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;It's because pixel level alignment at the beginning of the whole image processing has inevitable errors, e.g., of 1-2 pixel scale laterally, and couple microns in the vertical dimensions; these errors need to be further minimized during aligning edges.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;When aligning edges, we now have three sets of data that needs to be aligned: inner/outer edge and bottom &lt;span style="font-weight: bold;"&gt;(short to IOB)&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The result we want here is in the aligned data, there is no distortion in the relative position between IOB, both laterally and vertically.&lt;/li&gt;&lt;li&gt;Unfortunately, it is proven that simply aligning each element of IOB will cause misalignment of the others, and the accumulated errors will grow out of control as we go along the groove.&lt;/li&gt;&lt;li&gt;Therefore, my current strategy is to have a hierarchical alignment:&lt;br /&gt; &lt;/li&gt;&lt;ol&gt;&lt;li&gt;Set one edge as master and align between FOVs for it. &lt;/li&gt;&lt;li&gt;Set the other two as slaves, and shift them using the same step resulted from the master alignment&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Unfortunately, although this works fine for lateral cases, in the vertical direction, it caused the former "jumping" bottom we saw.&lt;/li&gt;&lt;li&gt;So I ended up aligned bottom separately, which eliminated the z-gap we saw a month ago.&lt;br /&gt; &lt;/li&gt;&lt;li&gt;But now it turned out that it distorted the depth.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;I now suspect that the vertical hierarchical alignment should have a finer algorithm, and the bottomline is we never align more than one IOB element.&lt;/span&gt;&lt;br /&gt; &lt;/li&gt;&lt;/ol&gt;   &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1983812500750277735?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1983812500750277735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1983812500750277735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1983812500750277735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1983812500750277735'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/bug-detected-in-groove-unwrapping.html' title='Bug detected in groove unwrapping'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-731801969572470627</id><published>2009-07-11T13:46:00.001-07:00</published><updated>2009-07-11T13:46:09.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stylus shape with depth calculated by using inner edge as top</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;ol&gt;&lt;li&gt;Summary&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Previous tests are repeated except that the depth is calculated as the vertical distance between inner edge and bottom.&lt;br/&gt;  &lt;/li&gt;&lt;li&gt;I won't waste time pasting images here. They look about the same in terms of the depth value range as the ones in previous posts.&lt;/li&gt;&lt;li&gt;This tells us that &lt;span style='font-weight: bold;'&gt;in the data we have&lt;/span&gt;: &lt;br/&gt;  &lt;/li&gt;&lt;ol&gt;&lt;li&gt;Even though the groove width value ranges are pretty consistent across the groove, the disc is non-flat and the depth range varies. &lt;/li&gt;&lt;li&gt;Stylus shape is not consistent in this data, e.g., with somewhere width/depth ratio being around 2 and elsewhere around 6.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;We need to do the same test with other datasets before we draw the conclusion.&lt;/li&gt;&lt;/ol&gt; Plan&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Do the stylus shape test with different datasets we have. &lt;br/&gt;  &lt;/li&gt;&lt;li&gt;Continue to get sound because we've cleared some serious bugs without re-testing the sound extraction.&lt;/li&gt;&lt;li&gt;Prepare for running a brand new experiment with new data scanned under 50X/20X. &lt;br/&gt;  &lt;/li&gt;&lt;/ol&gt;       &lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-731801969572470627?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/731801969572470627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=731801969572470627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/731801969572470627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/731801969572470627'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-with-depth-calculated-by.html' title='Stylus shape with depth calculated by using inner edge as top'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6970039727134449882</id><published>2009-07-11T09:19:00.000-07:00</published><updated>2009-07-11T09:59:56.913-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stylus shape (center bottom) analysis</title><content type='html'>Analysis&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt;Take Data set as an example. The depth curve in 1D bottom with the "groove center" algorithm is much smoother than the "groove deepest point" algorithm&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;     &lt;ol&gt;&lt;br /&gt;     &lt;li&gt;Center bottom:&lt;a href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_btm_flex.png"&gt;http://132.206.14.194/~kakyo/0.report/32.stylus_shape/4/z_btm_flex.png&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;     &lt;li&gt;Deepest bottom: &lt;a href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_btm_flex.png"&gt;http://132.206.14.194/~kakyo/0.report/32.stylus_shape/2/z_btm_flex.png&lt;/a&gt;&lt;br /&gt;     &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt; &lt;li&gt;The width/depth ratios are still noisy from both algorithms. This is due to the fact that although the value range of width is pretty stable across the groove, the value range of depth is not: in Dataset 1 the depth range is about 28~38um, while in Dataset 2 it is 11~21um.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The data in #2 is very suspicious. Depth is now computed as the distance between groove top and bottom, where top is the mean of z values of inner/outer edges. If both edges are noisy, the mean could exaggerate it, leading to inaccurate depth. Therefore, it's worth trying to use either inner or outer edge alone as the groove top z values. &lt;/li&gt;&lt;/ol&gt;Plan&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Do the same experiment with the proposed depth metric in Analysis #3&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6970039727134449882?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6970039727134449882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6970039727134449882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6970039727134449882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6970039727134449882'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-center-bottom-analysis.html' title='Stylus shape (center bottom) analysis'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6308978328783829688</id><published>2009-07-11T09:13:00.000-07:00</published><updated>2009-07-11T09:19:28.743-07:00</updated><title type='text'>Stylus shape (center bottom) Data set 2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;span style="font-weight: bold;"&gt;NOTE: groove width and z values of inner/outer edges are the same as in previous post on Data set 2.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/width_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/width_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/width_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/width_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/depth_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/depth_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/depth_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/ratio.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_in_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_in_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_in_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;7.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_out_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_out_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;9.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_btm_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;10.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/z_btm_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;11.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/4/iob_flex.png" alt="" border="0" /&gt;&lt;br /&gt;12.&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6308978328783829688?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6308978328783829688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6308978328783829688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6308978328783829688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6308978328783829688'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-center-bottom-data-set-2.html' title='Stylus shape (center bottom) Data set 2'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8276741416600545075</id><published>2009-07-11T08:47:00.000-07:00</published><updated>2009-07-11T09:09:17.349-07:00</updated><title type='text'>Stylus shape (center bottom) Data set 1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/width_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/width_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/width_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/width_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/depth_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/depth_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/depth_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/ratio.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/z_in_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/z_in_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/z_in_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;7.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/z_out_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/z_out_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;9.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/z_btm_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;10.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/z_btm_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;11.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/3/iob_flex.png" alt="" border="0" /&gt;&lt;br /&gt;12.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The same experiment as in the last post using a different bottom thinning algorithm: use the center of the groove valley as the 1D bottom.&lt;/li&gt;&lt;li&gt;The last plot of three edges looks less jagged as the previous bottom thinning algorithm based on deepest points.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;NOTE: the groove width and z values of inner/outer edges are the same as the previous posts on Data set 1.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8276741416600545075?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8276741416600545075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8276741416600545075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8276741416600545075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8276741416600545075'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-center-bottom-data-set-1.html' title='Stylus shape (center bottom) Data set 1'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5752315325602273599</id><published>2009-07-06T20:25:00.000-07:00</published><updated>2009-07-06T20:48:27.546-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stylus shape: Data set 2 - Part II</title><content type='html'>Summary&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Data set 2 uses the same algorithm for generating Data set 1.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Most part of Data set 2 is similar to Data set 1.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The major difference is that the width/depth ratio is different (See Figure 5), meaning that the overall width/depth ratio is noisy. Given that bottom doesn't look too off, this may suggest that width/depth ratio is not a qualified descriptor stylus shape, under current scan resolution.&lt;/li&gt;&lt;/ol&gt;Plan&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Try the same thing with the lateral rule and bottom thinning.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5752315325602273599?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5752315325602273599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5752315325602273599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5752315325602273599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5752315325602273599'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-data-set-2-part-ii.html' title='Stylus shape: Data set 2 - Part II'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-786833853966363969</id><published>2009-07-06T20:24:00.001-07:00</published><updated>2009-07-06T20:47:29.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stylus shape: Data set 2 - Part I</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/width_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/width_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/width_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/width_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/depth_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/depth_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/depth_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/ratio.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_in_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_in_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_in_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;7.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_out_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_out_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;9.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_btm_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;10.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/z_btm_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;11.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 2="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/2/iob_flex.png" alt="" border="0" /&gt;&lt;br /&gt;12.&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-786833853966363969?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/786833853966363969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=786833853966363969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/786833853966363969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/786833853966363969'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-data-set-2-part-i.html' title='Stylus shape: Data set 2 - Part I'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4260329267157735569</id><published>2009-07-06T18:37:00.000-07:00</published><updated>2009-07-06T19:01:29.378-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stylus shape: Data set 1 - Part II</title><content type='html'>Summary&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt;The last post presents a series of groove/stylus shape information from a 600-point segment of unwrapped stereo-sine groove. From top to bottom, they are:&lt;/li&gt;&lt;ol&gt;&lt;br /&gt;       &lt;li&gt;Width with flexible scale of both axes&lt;/li&gt;        &lt;li&gt;Width with equal scale&lt;/li&gt;&lt;li&gt;Depth, flexible scale&lt;/li&gt;        &lt;li&gt;Depth, equal scale&lt;/li&gt;        &lt;li&gt;Width/Depth ratio&lt;/li&gt;        &lt;li&gt;Z of inner edge, flexible scale&lt;/li&gt;        &lt;li&gt;Same as #6, equal scale&lt;/li&gt;        &lt;li&gt;Z of outer edge, flexible scale&lt;/li&gt;        &lt;li&gt;Same as #8, equal scale&lt;/li&gt;        &lt;li&gt;Z of bottom, flexible scale&lt;/li&gt;        &lt;li&gt;Z of bottom, equal scale&lt;/li&gt;&lt;li&gt;Radii of outer edge, bottom, and inner edge (top down)&lt;br /&gt;&lt;/li&gt;     &lt;/ol&gt;  &lt;li&gt;The shape of width and depth are pretty much sine, butthey are quite noisy. Width data has quantized jump between data, because the difference between neighboring data is hitting the horizontal resolution of the microscope (10X, 0.001 mm/pixel)&lt;/li&gt;&lt;li&gt;Figure 5 (ratio of width/depth) looks quite noisy, but it's mostly around 2. Which is the theoretical ratio of width / depth based on the 45-degree cutting scheme ( the cross-section is supposed to be an isosceles right triangle.&lt;/li&gt;&lt;li&gt;Figure 6-9 showed z values of inner and outer edge. From the equal scaled versions, the inner and outer edges are almost flat.&lt;/li&gt;&lt;li&gt;Figure 10-11 show z of bottom. The 1-D bottom is estimated with the deepest-rule: among the bottom points at the azimuth A, the deepest point is taken as the true bottom.&lt;/li&gt;&lt;li&gt;Figure 12 shows that the deepest rule is not accurate in that the radii of the 1D bottom are not smooth. Therefore, deepest rule alone either does not guarantee accuracy. It has to be regulated with certain lateral rules or lateral thinning algorithm.&lt;/li&gt;&lt;li&gt;We'll show the lateral rule in next set of posts. Lateral rule uses the center of the groove cross section as the true bottom position.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4260329267157735569?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4260329267157735569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4260329267157735569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4260329267157735569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4260329267157735569'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-data-set-1-part-ii.html' title='Stylus shape: Data set 1 - Part II'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7919770167140990871</id><published>2009-07-06T18:36:00.000-07:00</published><updated>2009-07-06T18:48:10.285-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stylus shape: Data set 1 - Part I</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/width_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/width_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;1.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/width_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/width_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/depth_flex.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/depth_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/depth_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/ratio.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/z_in_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/z_in_eq.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/z_in_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;7.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/z_out_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/z_out_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;9.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/z_btm_flex.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;10.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/z_btm_eq.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;11.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" 194="" kakyo="" report="" stylus_shape="" 1="" png=""&gt;&lt;img style="cursor: pointer; width: 320px; height: 236px;" src="http://132.206.14.194/%7Ekakyo/0.report/32.stylus_shape/1/iob_flex.png" alt="" border="0" /&gt;&lt;br /&gt;12&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7919770167140990871?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7919770167140990871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7919770167140990871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7919770167140990871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7919770167140990871'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/stylus-shape-data-set-1-part-i_421.html' title='Stylus shape: Data set 1 - Part I'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-735311772038349398</id><published>2009-07-05T16:01:00.000-07:00</published><updated>2009-07-05T16:18:53.009-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='groove geometry'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='backtrace'/><title type='text'>groove edge pairing: FOV backtrace</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JDks8GZN8kI/SlEy_S0kwTI/AAAAAAAAATY/Dr15O9eDewg/s1600-h/groove_600pt_fov_btm.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 283px;" src="http://1.bp.blogspot.com/_JDks8GZN8kI/SlEy_S0kwTI/AAAAAAAAATY/Dr15O9eDewg/s400/groove_600pt_fov_btm.png" alt="" id="BLOGGER_PHOTO_ID_5355117494885728562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JDks8GZN8kI/SlEy7KeBWpI/AAAAAAAAATQ/8J9nlItPaWM/s1600-h/groove_600pt_fov2.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://1.bp.blogspot.com/_JDks8GZN8kI/SlEy7KeBWpI/AAAAAAAAATQ/8J9nlItPaWM/s400/groove_600pt_fov2.png" alt="" id="BLOGGER_PHOTO_ID_5355117423924173458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JDks8GZN8kI/SlExqk59bKI/AAAAAAAAATI/6AQ59E3x8ME/s1600-h/groove_600pt.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://3.bp.blogspot.com/_JDks8GZN8kI/SlExqk59bKI/AAAAAAAAATI/6AQ59E3x8ME/s400/groove_600pt.png" alt="" id="BLOGGER_PHOTO_ID_5355116039451274402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Summary:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;In previous post, I may have mistaken the sine wave undulation for a "jagged" signal; the plot was not scaled equally in x and y, which exaggerated the jagged situation.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The plot in the last post includes a couple tens of FOVs all stitched together.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The plots here show only a portion of the inner/outer/bottom edge plot in the last post.&lt;/li&gt;&lt;li&gt;The bottom plot shows the portion, the next image shows the backtraced inner edge in FOV. The top image shows the bottom in the same FOV.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The units are both mm for x and y dimension in the plot at the bottom.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The x and y axes in the plot is scaled differently for visual clarity.&lt;/li&gt;&lt;li&gt;I don't think it necessary to show the marked outer edge, because it's easy to see in the other two images of the same CC.&lt;/li&gt;&lt;li&gt;In the plots here, the 1D bottom is still off quite a bit. Quite a few points are off center due to our "deepest=bottom" decision.&lt;/li&gt;&lt;li&gt;Anther detail of the plot of the last post is that the envelope of the edges show a monotonous decrease, which is correct according to the inward spiral of LPs.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-735311772038349398?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/735311772038349398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=735311772038349398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/735311772038349398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/735311772038349398'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/groove-edge-pairing-fov-backtrace.html' title='groove edge pairing: FOV backtrace'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_JDks8GZN8kI/SlEy_S0kwTI/AAAAAAAAATY/Dr15O9eDewg/s72-c/groove_600pt_fov_btm.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3522517075733692741</id><published>2009-07-05T09:56:00.000-07:00</published><updated>2009-07-05T10:15:50.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='groove geometry'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='pairing'/><title type='text'>A major source of error in stylus shape stats</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/SlDbeCgtVDI/AAAAAAAAATA/6mZljfKXzrE/s1600-h/groove.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/SlDbeCgtVDI/AAAAAAAAATA/6mZljfKXzrE/s400/groove.png" alt="" id="BLOGGER_PHOTO_ID_5355021266060137522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Previously we try to plot varius groove variables (width, depth, ratio of width/depth, etc), however, a detail in algorithm is never brought up: the way we determine the inner/outer groove top edge pair every step along the groove. &lt;span style="font-weight: bold;"&gt;See Detail.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;This algorithmic decision is much responsible for the local noisy width as we shown before, which should have been smooth.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;A question:&lt;/span&gt; Should we interpolate and resample inner/outer edge and bottom, so that a common time-line is shared between all three parties,  before pairing up them for the width and depth info?&lt;/li&gt;&lt;/ol&gt;Detail&lt;br /&gt;&lt;ol&gt;&lt;li&gt;See the plot at the top of this post. Looking top down, the three lines of points are segments of groove outer edge, bottom, and inner edge. Inner edge looks smooth, while the other two look extremely jaggy. See below for the cause.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;After matching up raw edge data in windows (defined in the last post), the raw edge data are on their own floating-point time-lines (azimuths) that are not aligned with each other. Therefore, to get width/depth data, we need to pair up inner/outer edge, and extract the 1D bottom from the bottom band in the groove valley.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The way we match up them: We use the inner edge as the common time-line; at each azimuth, we search in the outer edge for the closest azimuth and use that point as a pair; &lt;span style="font-weight: bold;"&gt;if this point has been used by previous point, this pair is taken as a redundant pair and is discarded&lt;/span&gt;; After inner/outer edges pairs are extracted, at each pair's azimuth, we search in the 2D bottom band for the closest &lt;span style="font-weight: bold;"&gt;points&lt;/span&gt; that are inline with the pair; then we select the deepest point as the 1D bottom. The result is what's plotted above.&lt;/li&gt;&lt;li&gt;The problem with this algorithm is that since inner/outer edges and bottom don't share the same time-line, the pairing with nearest counterpart in one another generates errors, which is further messed up by the redundancy-removal algorithm.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;A possible solution&lt;/span&gt;: resample each of the three party at an audio rate, before calculating groove stats via pairing them.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3522517075733692741?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3522517075733692741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3522517075733692741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3522517075733692741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3522517075733692741'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/major-source-of-error-in-stylus-shape.html' title='A major source of error in stylus shape stats'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JDks8GZN8kI/SlDbeCgtVDI/AAAAAAAAATA/6mZljfKXzrE/s72-c/groove.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3769478056704420353</id><published>2009-07-02T06:03:00.001-07:00</published><updated>2009-07-02T06:03:31.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windowing'/><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='discontinuity'/><category scheme='http://www.blogger.com/atom/ns#' term='bottom thinning'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><category scheme='http://www.blogger.com/atom/ns#' term='unwrap'/><title type='text'>Bug fix and stylus stats (quick heads up)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;font face='sans-serif'&gt;Summary&lt;br/&gt;&lt;/font&gt;&lt;ol&gt;&lt;li&gt;Found a bug in groove unwrapping, and previous "jump" in bottom depth is now cleared. See Detail #1&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Removed another bug in groove unwrapping caused by the intermediate data windowing. See Detail #2. &lt;/li&gt;&lt;li&gt;A new problem arose: The width data showing some local static value, i.e., changes in consecutive points are either zero or a step of size 0.1mm. I assume it's another bug and working on it.&lt;/li&gt;&lt;li&gt;I'll work on #3 for a day or so before showing the entire image results.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;In the first alignment before CC analysis, we align image on the pixel level. During unwrapping, we need to refine the alignment for the extracted edges.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Previously due to RAM limit, we can't downsample the entire groove all in one shot. Instead, we need to group a number of FOVs during unwrapping and make them a "window" as a super-FOV level; then we resample within the window before finally stitching the windows together. By working on super-FOV level instead of resampling and fitting for each FOV, it's easier to see longer signal during each step, otherwise we would have to stitching FOVs during each step just to see the results. However, previously I chose window size by a fixed number of FOVs for all inner, outer edges, and bottom. This caused data loss when having to truncate the heads and tails of the FOVs, because there usually is a size gap between the inner/outer edges and the bottom. So finally I changed the entire windowing scheme to using time (e.g., 0.04sec per window) as the window size and the depth discontinuity in bottom is cleared; and we can safely backward trace data from unwrapped groove to original FOVs.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3769478056704420353?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3769478056704420353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3769478056704420353' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3769478056704420353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3769478056704420353'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/07/bug-fix-and-stylus-stats-quick-heads-up.html' title='Bug fix and stylus stats (quick heads up)'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-9003347311053883003</id><published>2009-05-31T23:19:00.000-07:00</published><updated>2009-05-31T23:40:54.447-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Plot z coords of groove inner, outer edges and groove bottom</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/SiN2cvcYNrI/AAAAAAAAASQ/dvz1bujm0jU/s1600-h/inner_edge_500pt_unscalled.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/SiN2cvcYNrI/AAAAAAAAASQ/dvz1bujm0jU/s400/inner_edge_500pt_unscalled.png" alt="" id="BLOGGER_PHOTO_ID_5342243819135448754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JDks8GZN8kI/SiN2hcaYIWI/AAAAAAAAASY/e6FvKa2lZXw/s1600-h/outer_edge_500pt_unscalled.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://3.bp.blogspot.com/_JDks8GZN8kI/SiN2hcaYIWI/AAAAAAAAASY/e6FvKa2lZXw/s400/outer_edge_500pt_unscalled.png" alt="" id="BLOGGER_PHOTO_ID_5342243899926126946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JDks8GZN8kI/SiN2mHOdjgI/AAAAAAAAASg/D8a9e-xUfpc/s1600-h/bottom_500pt_unscalled.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://3.bp.blogspot.com/_JDks8GZN8kI/SiN2mHOdjgI/AAAAAAAAASg/D8a9e-xUfpc/s400/bottom_500pt_unscalled.png" alt="" id="BLOGGER_PHOTO_ID_5342243980138352130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Above shows the z coordinates of the groove inner, outer edge, and bottom of 500 points corresponding to the widht, depth and ratio of width/depth last time.&lt;/li&gt;&lt;li&gt;It's clear that inner and outer edges are at different absolution height.&lt;/li&gt;&lt;li&gt;There are fluctuations in all three signals, where inner and outer edges were really meant to be falt.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is a z-jump in the bottom, which may be due to seriously wrong stylus shape stas or the technical detail.&lt;/li&gt;&lt;li&gt;z-coords of bottom should be corectly collected.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-9003347311053883003?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/9003347311053883003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=9003347311053883003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9003347311053883003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9003347311053883003'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/05/plot-z-coords-of-groove-inner-outer.html' title='Plot z coords of groove inner, outer edges and groove bottom'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JDks8GZN8kI/SiN2cvcYNrI/AAAAAAAAASQ/dvz1bujm0jU/s72-c/inner_edge_500pt_unscalled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6339286356007149183</id><published>2009-05-25T18:59:00.001-07:00</published><updated>2009-05-25T19:22:31.557-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Updated width, depth, width/depth stats of unwrapped groove</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/ShtNPlX09OI/AAAAAAAAAR4/H_AQ5ljZjEg/s1600-h/width_500pt.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 211px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/ShtNPlX09OI/AAAAAAAAAR4/H_AQ5ljZjEg/s400/width_500pt.png" alt="" id="BLOGGER_PHOTO_ID_5339946713303282914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JDks8GZN8kI/ShtN0vLxkqI/AAAAAAAAASA/cx3ofQPtctM/s1600-h/depth_500pt.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 211px;" src="http://1.bp.blogspot.com/_JDks8GZN8kI/ShtN0vLxkqI/AAAAAAAAASA/cx3ofQPtctM/s400/depth_500pt.png" alt="" id="BLOGGER_PHOTO_ID_5339947351592243874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JDks8GZN8kI/ShtN7E-kTqI/AAAAAAAAASI/5MRikn8haNw/s1600-h/ratio_wd.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 211px;" src="http://2.bp.blogspot.com/_JDks8GZN8kI/ShtN7E-kTqI/AAAAAAAAASI/5MRikn8haNw/s400/ratio_wd.png" alt="" id="BLOGGER_PHOTO_ID_5339947460521643682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Previously width, depth, and width/depth stats collected from individual FOVs showed wrong trend, i.e., both width and depth had abrupt changes, no clear sinewave-like undulation was shown.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Updated stats from unwrapped groove show better results, as the images above, width, depth, ratio of width/depth to 500 points,  from top to bottom respectively.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Analysis&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Compared to previous individual FOV result, the width result shows reasonably sine-wave-like envelope. Occasional outliers are probably due to debris from groove detaching/reattaching process.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The depth result appears much noisy than it is supposed to be, i.e., it should have been sinewave-like as well. This error may arise from wrong groove bottom position estimation.&lt;/li&gt;&lt;li&gt;As the result of problematic depth, the width/depth ratio appears far from a constant.&lt;/li&gt;&lt;/ol&gt;Plan&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Experiment with bottom position estimation by selecting a consistent position from across groove cross-section.&lt;/li&gt;&lt;li&gt;Start working on 50X version of the signal to see if any improvement can be achieved.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6339286356007149183?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6339286356007149183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6339286356007149183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6339286356007149183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6339286356007149183'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/05/updated-width-depth-widthdepth-stats-of.html' title='Updated width, depth, width/depth stats of unwrapped groove'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JDks8GZN8kI/ShtNPlX09OI/AAAAAAAAAR4/H_AQ5ljZjEg/s72-c/width_500pt.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4651259989202139716</id><published>2009-05-15T18:54:00.001-07:00</published><updated>2009-05-15T18:54:22.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylus shape'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stylus shape stats (width/depth ratio)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/Sg4bz6vEapI/AAAAAAAAARw/aSL3O1KJH-4/s1600-h/ratio_wd_3223fovs.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/Sg4bz6vEapI/AAAAAAAAARw/aSL3O1KJH-4/s400/ratio_wd_3223fovs.png" alt="" id="BLOGGER_PHOTO_ID_5336233187234572946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;br /&gt; * Histogram of the ratio of groove width to groove depth is shown in figure above.&lt;br /&gt; * The result showing that the width/depth ratio is extremely stable for this piece of data.&lt;br /&gt;&lt;br /&gt;Detail&lt;br /&gt;&lt;br /&gt; * The data used are 3223 FOVs of the stereo sinewave (about 10 sec).&lt;br /&gt;* In the 10-bin histogram (Matlab default), the most dominant bin is the ratio 0.290, with a percentage of 99.99987%, among 5497858 instances (azimuthal increments).&lt;br /&gt; * In the 20-bin histogram, the most dominant bin is 0.126, with a percentage of 99.9999%&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4651259989202139716?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4651259989202139716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4651259989202139716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4651259989202139716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4651259989202139716'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/05/stylus-shape-stats-widthdepth-ratio.html' title='Stylus shape stats (width/depth ratio)'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JDks8GZN8kI/Sg4bz6vEapI/AAAAAAAAARw/aSL3O1KJH-4/s72-c/ratio_wd_3223fovs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8838305945340785464</id><published>2009-04-27T18:16:00.000-07:00</published><updated>2009-04-27T18:49:36.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='warp'/><category scheme='http://www.blogger.com/atom/ns#' term='concave'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>A more probable cause of the DC-shift-like "modulation" on radius/depth</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JDks8GZN8kI/SfZdBPqSxOI/AAAAAAAAARk/cthpGA0-MXw/s1600-h/screw_warp.png"&gt;&lt;img style="cursor: pointer; width: 309px; height: 400px;" src="http://3.bp.blogspot.com/_JDks8GZN8kI/SfZdBPqSxOI/AAAAAAAAARk/cthpGA0-MXw/s400/screw_warp.png" alt="" id="BLOGGER_PHOTO_ID_5329549485004735714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Summary:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We discovered a strange modulation in both lateral and vertical direction and appears to be out of phase in both dimensions.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I suspected that the modulation could have been from RIAA EQ; this was soon defied because what EQ would only modulate amplitude, but what we see in the previously posted plots are essentially DC shifts, which could not have been simple amplitude or frequency modulation.&lt;/li&gt;&lt;li&gt;I suddenly realized that a more probably cause is &lt;span style="font-weight: bold;"&gt;the systematic surface warp (concave) caused by the screw fit in the center hole of the record.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Analysis&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The "modulation" we saw in previous depth/radius is a DC-shift error, not a&lt;br /&gt;&lt;/li&gt;&lt;li&gt;See the illustration at the top, because the screw has to be tightly fit to the hole to keep the disc from shifting, the disc surface will concave to the center.  Since the direction of concave is usually not perpendicular to the vertical or horizontal axis, both radius and depth values of the groove position will distort; when this distortion is not evenly distributed, they will also lead to the center estimation error, rendering the entire polar system questionable.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Even more unfortunately, all our previous data was extracted from the last few grooves; being the closest grooves to the center screw, the center of the concave, they should have suffered more from this systematic warp.&lt;/li&gt;&lt;li&gt;See the illustration, because the groove tracing in our experiment starts from 6 o'clock position, the periodicity that we have seen in the depth/radius distortion is probably caused by a specific concave pattern: The 12 O'clock concaved to the deepest level while the 6 o'clock concaved the least; the 3 and 9 o'clock were under a roughly symmetrical concave. As a result, we see the unwrapped groove depth value sequence drops from 6 o'clock till the 12 o'clock, and then rise again symmetically back to where it used to be.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;This is a pretty interesting discovery that may explain the similar modulation that Haber has experienced but couldn't explain in their paper.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Solution&lt;br /&gt;&lt;ul&gt;&lt;li&gt;On one hand, this is a pretty bad distortion source in that it warps both the disc center position and the grooves; however, from the fact that the audio output still sounds like 1K sine, means that this distortion doesn't introduce much spectral pollution. The DC-shift didnt seem to be too bad.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I don't think there is a proper software solution to conteract the concaving. We should really come up with a better fixture that minimize such systematic surface warp.&lt;/li&gt;&lt;li&gt;It's pretty bad that all our newly scanned data was done under the same fixture, so there is bound to be the same problem. In the last data I'm trying to scan (the 10 sec music), I will try to extract something on the outer grooves, and at the same time try to minimize the concaving.&lt;/li&gt;&lt;/ul&gt;Question&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How should we present this in ISMIR paper? I really don't think stereo decoding using depth and lateral under this situation makes much sense however we try.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8838305945340785464?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8838305945340785464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8838305945340785464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8838305945340785464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8838305945340785464'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/04/more-probable-cause-of-dc-shift-like.html' title='A more probable cause of the DC-shift-like &quot;modulation&quot; on radius/depth'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_JDks8GZN8kI/SfZdBPqSxOI/AAAAAAAAARk/cthpGA0-MXw/s72-c/screw_warp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5180210136257840850</id><published>2009-04-26T16:06:00.000-07:00</published><updated>2009-04-26T16:34:08.584-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='warp'/><category scheme='http://www.blogger.com/atom/ns#' term='modulation'/><category scheme='http://www.blogger.com/atom/ns#' term='depth'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'></title><content type='html'>Summary&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    In the extracted (stitched) undulation sequence of the stereo sine wave, a low frequency modulation can be seen.&lt;/li&gt;&lt;li&gt;    The modulation is not only in the lateral direction, but also present an "out-of-phase" counterpart in the depth sequences. See images below.&lt;/li&gt;&lt;/ol&gt;Analysis&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It is a reasonable phenomenon that the radii appear modulated because of the incorrect center estimation.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;However, it is weird that depth presents such an "out-of-phase" modulation.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Regarding the possible source of such modulation, it's hard to imagine the disc surface warp be one, because this modulation is so "clean" that any random warp couldn't have created such a smooth trend.&lt;/li&gt;&lt;li&gt;Another possible source is the wrong estimation of edge of groove; but since the bottom appear modulated the same way, this wouldn't have been the cause.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Compared between #3 and #4, surface warp may be the more likely error source, because warp keeps the groove depth a constant, so the depth difference between bottom and top should be consistent, like we see in the plots below.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For the depth problem, assuming a perfect flat top edge, we can find the centroid of the top edge depths, and translate every point to this centroid, and then adjust the bottom in sync.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Plots of sine wave undulations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Depth  of the groove bottom&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/SfTqBNwddlI/AAAAAAAAARc/1cy6sUFwNeM/s1600-h/depth_bottom.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/SfTqBNwddlI/AAAAAAAAARc/1cy6sUFwNeM/s400/depth_bottom.png" alt="" id="BLOGGER_PHOTO_ID_5329141565679826514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;2. Depth of the groove outer edge&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JDks8GZN8kI/SfTpwe6r8SI/AAAAAAAAARU/CxH6jJNncZw/s1600-h/depth_edge_outer.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://3.bp.blogspot.com/_JDks8GZN8kI/SfTpwe6r8SI/AAAAAAAAARU/CxH6jJNncZw/s400/depth_edge_outer.png" alt="" id="BLOGGER_PHOTO_ID_5329141278228345122" border="0" /&gt;&lt;/a&gt;1. Depth of the groove inner edge&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/SfTpwbY8pJI/AAAAAAAAARM/-HxJBcc7EtY/s1600-h/depth_edge_inner.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/SfTpwbY8pJI/AAAAAAAAARM/-HxJBcc7EtY/s400/depth_edge_inner.png" alt="" id="BLOGGER_PHOTO_ID_5329141277281526930" border="0" /&gt;&lt;/a&gt;4. Radius of the groove bottom&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JDks8GZN8kI/SfTpwHJ7flI/AAAAAAAAARE/fx-FLN7LIFw/s1600-h/radius_bottom.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://2.bp.blogspot.com/_JDks8GZN8kI/SfTpwHJ7flI/AAAAAAAAARE/fx-FLN7LIFw/s400/radius_bottom.png" alt="" id="BLOGGER_PHOTO_ID_5329141271849827922" border="0" /&gt;&lt;/a&gt;5. Radius of the groove outer edge&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JDks8GZN8kI/SfTpwCZLMMI/AAAAAAAAAQ8/_5NY3L9lXJs/s1600-h/radius_edge_outer.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://2.bp.blogspot.com/_JDks8GZN8kI/SfTpwCZLMMI/AAAAAAAAAQ8/_5NY3L9lXJs/s400/radius_edge_outer.png" alt="" id="BLOGGER_PHOTO_ID_5329141270571593922" border="0" /&gt;&lt;/a&gt;6. Radius of the groove inner edge&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JDks8GZN8kI/SfTpv1PXDiI/AAAAAAAAAQ0/C9Zq6ktQ3Yw/s1600-h/radius_edge_inner.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://1.bp.blogspot.com/_JDks8GZN8kI/SfTpv1PXDiI/AAAAAAAAAQ0/C9Zq6ktQ3Yw/s400/radius_edge_inner.png" alt="" id="BLOGGER_PHOTO_ID_5329141267040767522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5180210136257840850?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5180210136257840850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5180210136257840850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5180210136257840850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5180210136257840850'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/04/summary-in-extracted-stitched.html' title=''/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JDks8GZN8kI/SfTqBNwddlI/AAAAAAAAARc/1cy6sUFwNeM/s72-c/depth_bottom.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3431873882244163982</id><published>2009-03-29T19:13:00.000-07:00</published><updated>2009-03-29T19:18:53.622-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Center Correction'/><category scheme='http://www.blogger.com/atom/ns#' term='Stereo'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Audio extraction from music signal</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JDks8GZN8kI/SdArXPMJZ1I/AAAAAAAAAQU/661rHtWQZOk/s1600-h/center_error.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_JDks8GZN8kI/SdArXPMJZ1I/AAAAAAAAAQU/661rHtWQZOk/s400/center_error.png" alt="" id="BLOGGER_PHOTO_ID_5318798838139021138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I've been trying to extract audio from music signal scanned 1 year ago. And now the signal is extracted but with strange shape. The output sound was just clicks, which is either a bug or the scanned area was not as expected. The expected audio should be brass note of the ending of a classical track.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The music signal was expected to be nearly 10 sec long but is unfortunately cut short to about 2 sec (1.05 cycles) due to a few "missing" FOV on the outermost revolution.&lt;/li&gt;&lt;li&gt;The missed out FOVs are due to the mis-calculation of the grid based on the assumtion that grooves are nearly perfect circle. Such an assumtion yielded an scanning area that is smaller than it needs to be to cover all portions of the groove of the same outer revolution.&lt;/li&gt;&lt;li&gt;The extracted signal appears to be modulated by a low-frequency signal, in the same way as we saw on the previous test sine signal. This now can be reasonably concluded to be the result of the inaccurate estimation of the disc center. See detail for the analysis. See below the image&lt;/li&gt;&lt;/ol&gt;Detail&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The low-frequency modulation is due to the fact that the estimated disc center is bound to be closer to one half-circle while farther away from the other, along a specific diameter (let's call it division diameter); this way, imagine that we have a complete silence signal, i.e., smooth spirals around the center; if we follow this signal starting from the division diameter the calculated radius of each tangential position in the polar system will be fluctuating periodically as the angular increment proceeds further away from the division diameter and then returns to the same angular position. &lt;/li&gt;&lt;li&gt;This is probably why Haber used the sinusoidal term, and derived disc-dependent parameters in their center correction algorithm. So it's probably the most straightforward solution to our problem too.&lt;/li&gt;&lt;/ol&gt;Plan&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Find the way to get the correct center estimiation, using a silence segment of the signal as our test data.&lt;/li&gt;&lt;li&gt;Go on figuring out the stereo decoding.&lt;/li&gt;&lt;li&gt;The current musical signal is still not long enough. We may consider scan more.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3431873882244163982?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3431873882244163982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3431873882244163982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3431873882244163982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3431873882244163982'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/03/audio-extraction-from-music-signal.html' title='Audio extraction from music signal'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_JDks8GZN8kI/SdArXPMJZ1I/AAAAAAAAAQU/661rHtWQZOk/s72-c/center_error.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4936070227439115275</id><published>2009-02-10T21:01:00.001-08:00</published><updated>2009-02-10T21:03:49.323-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sidewall'/><category scheme='http://www.blogger.com/atom/ns#' term='Stereo'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Stuck at stereo problem</title><content type='html'>Summary&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Last time, the output was actually without the bottom information; I made a mistake in my code.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Therefore, what we heard last time was differentiated radius data from both side, no depth info in there.&lt;/li&gt;&lt;li&gt;Simple conjugation of width and depth data doesn't do the trick either.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;According to the 45degree cutting scheme, I also tried to extract the sidewall movement along the 45 degree direction (norm of the sidewalls). They generated weird data plotted as below:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Left channel:&lt;br /&gt;&lt;img src="http://132.206.14.194/%7Ekakyo/0.report/31.stereo/left_channel.png" style="width: 347px; height: 259px;" title="Left Channel Stereo: Silence (supposed to be)" alt="Sidewall 45-degree movement show's monotonous increasing value" /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Left sidewall's 45-degree movement show's monotonous decrease in value.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Right channel:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src="http://132.206.14.194/%7Ekakyo/0.report/31.stereo/right_channel.png" style="width: 298px; height: 222px;" title="Stereo Right Channel (1kHz sine wave suppsosed to be)" alt="Right sidewall's 45-degree movement " /&gt;&lt;/li&gt;&lt;li&gt;Right sidewall's 45-degree movement show's monotonous increase in value.&lt;/li&gt;&lt;li&gt;In my algorithm that reached this result, sidewall movement was interpreted as follows&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Looking at the groove cross-section, at any moment &lt;span style="font-style: italic;"&gt;t,  &lt;/span&gt;the sidewall is a line in the Cartesian coordinate system, where x-axis is represented by radius (i.e., r), while y-axis by depth (i.e., z)&lt;/li&gt;&lt;li&gt;Then the left or right sidewall movement becomes the displacement of such a line between consecutive moments, i.e., line-to-line distance, which can be deducted from the r-z coordinate system.&lt;/li&gt;&lt;li&gt;However, since most of the sidewall is missing, the line has to be imagined from two vertices, i.e., the top edge point and the bottom point at time &lt;span style="font-style: italic;"&gt;t&lt;/span&gt;,  then the sidewall displacement accuracy depends on our estimation of the groove edge and bottom positions at each moment.&lt;/li&gt;&lt;li&gt;The line-to-line distance between two consecutive moments, e.g., &lt;span style="font-style: italic;"&gt;t1&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;t2&lt;/span&gt;. was further simplified to the distance between  bottom(&lt;span style="font-style: italic;"&gt;t1&lt;/span&gt;) and line(&lt;span style="font-style: italic;"&gt;t2&lt;/span&gt;), which is the result of the above.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;What do we see in the above image results:&lt;/span&gt; There must have been some opposite trend in the movements of left and right sidewall that are captured in this model.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Left and right sidewall do have opposite positive direction&lt;/span&gt; in the interpreted signal from the movement. See this image:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;http://en.wikipedia.org/wiki/File:Plattenschrift_en.svg&lt;/li&gt;&lt;li&gt;and the one below&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Controversy in a counter-example of the movement versus signal sign relationship:&lt;/span&gt; Pure horizontal movement should generate in-phase signal in left and right channels. We know that if the stylus moves to the left, then the left and right sidewall move to the left together, but the resulting signal should be decreasing on the left and right channel together, because they both move to the negative direction, in other words, in phase.&lt;/li&gt;&lt;li&gt;Therefore, we saw some out of phase signal, if they could be called signal here.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;What did we expect as the correct result:&lt;/span&gt; We should have seen a straight line as the left channel and a wave on the right.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;What are the available explanations&lt;/span&gt;: A possible problem in here is that, we fit the edge and extracted the differentiated top edges and the bottom first, then if we try to further obtain the sidewall movement, we would get something that's not faithful to the original contour. But that still doesn't explain the monotonous and opposite trend in the left and right channel.&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;So I got stuck at this point. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;a title="- Uploaded with the Flock Browser - http://www.flock.com" href="http://picasaweb.google.com/li.beinan/MItAC#5301397258404313970"&gt;  &lt;img src="http://lh5.ggpht.com/_JDks8GZN8kI/SZJYt_BrO3I/AAAAAAAAANY/pDDFaaqQp0s/s144/moz-screenshot.jpg" border="0" /&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4936070227439115275?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4936070227439115275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4936070227439115275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4936070227439115275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4936070227439115275'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/02/stuck-at-stereo-problem.html' title='Stuck at stereo problem'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_JDks8GZN8kI/SZJYt_BrO3I/AAAAAAAAANY/pDDFaaqQp0s/s72-c/moz-screenshot.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4763973904060617266</id><published>2009-01-21T19:31:00.001-08:00</published><updated>2009-01-21T19:31:35.047-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bottom thinning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>groove unwrapping finished</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br/&gt;The groove unwrapping finished successfully, except that due to the previously reported alignment problem, it had to stop at the alignment gap at about the 1-sec position (one revolution). &lt;br/&gt;&lt;br/&gt;Now I'm working on the bottom-thinning (2D-to-1D single-pixel-wide bottom groove)&lt;br/&gt;I had a couple of algorithms tried on single-FOV case, theoretically the best way is to take into account tangential and radial continuity, with the generalized stylus shape (width-to-depth ratio stats along the grooves). This again, appears to be a typical dynamic programming problem, with the observed stylus shape distortion being the global cost and the local continuities the local states, but I'm gonna first try simple thresholding before implementing DP for this.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4763973904060617266?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4763973904060617266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4763973904060617266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4763973904060617266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4763973904060617266'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2009/01/groove-unwrapping-finished.html' title='groove unwrapping finished'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-923810430963615934</id><published>2008-12-31T14:20:00.001-08:00</published><updated>2008-12-31T14:20:14.133-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>Image alignment requires a DP-based redesign</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Problem&lt;br/&gt;&lt;ol&gt;&lt;li&gt;During groove unwrapping, gap appears between some successive FOVs near the bottom rows in the FOV grid, such that groove continuity was interrupted. It's non trivial to fill the gap without messing up the whole grid.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;This is clearly caused by our greedy alignment algorithm in the beginning, which does a 1-vs.-1 image alignment at a time: It introduces only one new image into the whole picture, and thus only consider images that already introduced into the whole picture during alignment, ignoring those that are yet to be brought up.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;The quality of greedy algorithm depends on the severity of stage drift during grid batch measurement. It worked well on one of our datasets before, so that I didn't bother to test another algorithm, based on Depth-Down research principle.&lt;/li&gt;&lt;li&gt;&lt;b&gt;What makes our measurement a particular problem to greedy algorithm&lt;/b&gt; is that because the label area is not included in the grid scan, the grid rows with label included are horizontally divided  into left and right parts, both of which have to be individually aligned. Therefore, both side have to be aligned with the the sub-grids above and below the label. Notice that different from the label-divided left/right parts, the top and bottom FOV subgrids are continuously distributed. &lt;b&gt;Now&lt;/b&gt; &lt;b&gt;if we go on align the left/right rows in the top-down manner, the greedy algorithm tends to introduce accumulated error to the point that one side of the discontiuous rows become disconnected with the bottom row&lt;/b&gt;, though visually perfectly aligned with the other rows.&lt;/li&gt;&lt;/ol&gt;Solution&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Now that it becomes clear that greedy algorithm caused accumulated row-alignment error. The solution, according to my stitching bibliography, is to use dynamic programming, which finds optimal path across all FOVs, and seek the best overall scheme.&lt;/li&gt;&lt;li&gt;DP is extremely time consuming. &lt;b&gt;Notice that our &lt;/b&gt;microscope does a row-by-row scan during the grid batch measurment, and the greatest possibility when drift is introduced is when it tries to move from the right end of current row all the way to the left end of the next; we thus can assume that greedy method is good enough in dealing with horizontal FOVs in the grid, and only uses DP for the inter-row alignment. &lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;Plan&lt;br/&gt;&lt;ol&gt;&lt;li&gt;This is top priority, without which later processes cannot continue. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;I'm not familiar with DP implementation. Will need a day or two to study it.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-923810430963615934?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/923810430963615934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=923810430963615934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/923810430963615934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/923810430963615934'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/12/image-alignment-requires-dp-based.html' title='Image alignment requires a DP-based redesign'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8537526123067946930</id><published>2008-12-30T19:13:00.001-08:00</published><updated>2008-12-30T19:14:31.099-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>Brief update</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;A presentation of my current progress and the entire audio extraction workflow was given at the group meeting two weeks ago.&lt;br /&gt;&lt;br /&gt;As a most important discovery, we talked about the stitching. It turned out that stitching has to be done in both image and audio domains. It actually contains 3 steps. The image domain alignment (pixel-based 2D alignment) gives us reliable coordinates for polar coordinate system construction; the "audio" stitching, which is performed on groove undulations after edge detection, during groove unwrapping will further refine the alignment result; however, due to the sheer amount of data, we cannot stitch them during the unwrapping before we downsample the data; so as the final step, once we downsampled data according to industry standard, the audio will be stitched together to generate the sound.&lt;br /&gt;&lt;br /&gt;FOV-chain building (the second step of the stitching and first step of groove unwrapping) is nicely done. The next step is to actually unwrap the groove in a windowning fashion.&lt;br /&gt;&lt;br /&gt;Before this, I experienced a few quirks in previous processes and fixed them, leaving me a fairly robust workflow before groove unwrapping.&lt;br /&gt;&lt;br /&gt;Once the new semester starts, I'll distribute my processes to more machines to speed them up.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8537526123067946930?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8537526123067946930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8537526123067946930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8537526123067946930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8537526123067946930'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/12/brief-update.html' title='Brief update'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3717736759748519209</id><published>2008-12-03T15:12:00.001-08:00</published><updated>2008-12-03T15:12:19.354-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='bottom thinning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Edge-bottom tertiary problem.</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ol&gt;&lt;li&gt;When extracting the tertiary of inner-edge, outer-edge, and bottom groove from the "continuous" edge array, we encountered local tangential noise as Stotzer reported in his dissertation. See Detail #1-4.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Bottom thinning problem. Given the 2D-nature of the captured groove bottom, we need to extract a one-pixel-wide bottom array. However, this proved not trivial.See Detail #5.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;When grouping up an inner-edge point with an outer-edge point plus the bottom, to preserve as much data as possible, we use the inner edge as the reference signal &lt;b&gt;&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;a&lt;/i&gt;1)&lt;/b&gt;, where &lt;b&gt;&lt;i&gt;a1&lt;/i&gt;&lt;/b&gt; refers to an azimuth, and we iterate through the signal; each point is supposed to have a unique outer-edge point pair; however, the locally noisy edge signal often creates overlaps in the pair-ed outer-edge point &lt;b&gt;&lt;i&gt;O&lt;/i&gt;(&lt;i&gt;a&lt;/i&gt;2)&lt;/b&gt;, i.e., &lt;i&gt;&lt;b&gt;I(a0)&lt;/b&gt;&lt;/i&gt;, &lt;b&gt;&lt;i&gt;I(a1), and I(a2)&lt;/i&gt;&lt;/b&gt; could share the same &lt;b&gt;&lt;i&gt;O(a2)&lt;/i&gt;&lt;/b&gt;;&lt;i&gt; &lt;/i&gt;this happens to bottom paired-up signal &lt;b&gt;&lt;i&gt;B(a3)&lt;/i&gt;&lt;/b&gt; as well.&lt;/li&gt;&lt;li&gt;In Stotzer's dissertation, he realized the problem, and somehow combined this process with resampling, that is to say, he would discard any problematic edge-tertiary when doing edge detection. More importantly, his edge detection is 1D, meaning by virtue of their hardware unwrapping process, they only look at radial direction and extract the edge at each azimuth. This is a resampling process in nature.&lt;/li&gt;&lt;li&gt;It seems to me that a smoothing before doing polynomial fitting would be inevitable because of the tertiary building error described above from local overlap caued by noisy data. This, however, requires testing against the resulting sound.&lt;/li&gt;&lt;li&gt;&lt;b&gt;At this point, I would remove nothing, but before polyfit I'd like to try smoothing it first.&lt;/b&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Result of bottom thinning according to two rules(deepest point of the middle point of the valley at the azimuth) both presented jaggy result. This is different from usual edge thinning problem in that here it requires bottom's compatibility with two noisy edge arrays, meaning we are seeking compatibility (parallel pattern) among three NOISY signals. They in theory should parallel to each other but without a bit of smoothing, they don't do exactly.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3717736759748519209?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3717736759748519209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3717736759748519209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3717736759748519209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3717736759748519209'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/12/edge-bottom-tertiary-problem.html' title='Edge-bottom tertiary problem.'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7959142469220581437</id><published>2008-11-27T16:15:00.001-08:00</published><updated>2008-11-27T16:15:03.139-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>Recent progresses</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;A series progresses are made over the last month and they will be summarized in series. Here is a brief.&lt;br/&gt;&lt;br/&gt;Summary&lt;br/&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;A refined audio extracting workflow is complete and fully implemented. Now it is under debugging.&lt;/li&gt;&lt;li&gt;Theory: Previously our focus of study was only on the groove valley in a scanned groove image; by analyzing a scanned image in terms of a &lt;b&gt;&lt;i&gt;tertiary unit&lt;/i&gt;&lt;/b&gt; of visible components, i.e., groove valley, groove top (spacing), and groove bottom,  from the very beginning of our workflow, we have made pre-processing (filtering), edge detection, and other processes more robust and consistent. &lt;b&gt;See Detail #1 and 2&lt;/b&gt;.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Edge detection is refined with a robust algorithm of controllable time-efficiency according to deeper understanding of our unique problem (it is different from a generic edge detection). Tested and its effectiveness verified. &lt;b&gt;See Detail #2.&lt;/b&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Sting removal (the debris from incomplete groove-detaching) is implemented by utilizing the shape consistency of a cutting stylus. Currently under testing. &lt;b&gt;See Detail #3.&lt;/b&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Filtering for neighboring FOVs: All filtering stages for an FOV now try to apply any changes in the overlapping area with neighboring FOVs to the corresponding areas of those. This help solve some really tricky problems of attached-grooves. Without this additional treatment, some attached-groove in narrow overlap region may cause the neighboring-FOV to suffer and very hard to detect.&lt;/li&gt;&lt;li&gt;Groove tracing via FOV concatenation and phase unwrapping: this has to be done in a windowing manner. &lt;b&gt;See Detail #4&lt;/b&gt;.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Stitching workflow is finalized; &lt;b&gt;We found that it does require efforts in both image and audio domain to complete the stitching&lt;/b&gt;. Initial alignment and groove unwrapping are done in image domain, and final stitching is done in audio domain. &lt;b&gt;See Detail #5&lt;/b&gt;.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;Detail &lt;br/&gt;&lt;ol&gt;&lt;li&gt;Previouly we had a hard time filtering out unwanted noise and complicated groove entangling by looking only at groove-valley-based CC analysis. By making full use of the physical relationship of all three categories of objects as a tertiary unit, i.e., groove valley, top, and bottom, all kinds of noises can be effectively filtered out: &lt;br/&gt;&lt;ol&gt;&lt;li&gt;The most robust algorithm for removing blobs uses the heuristics that "a non-groove object is contained by a groove top and has no groove bottom in it."&lt;/li&gt;&lt;li&gt;The most robust algorithm for detaching attached groove uses the heuristics that "a groove valley contains only a single chain of bottoms (if broken somehow)". This heuristics turn out to be much more robust in detaching attached grooves than other specific physical measures, e.g., groove width.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Edge detection for extracting groove undulation turns out to be non trivial in our problem domain. &lt;ol&gt;&lt;li&gt;&lt;b&gt;Why edge detection as opposed to direct angular sampling&lt;/b&gt;: we would like to postpone resampling until we extract full optically-acquired groove information.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Where is the edge&lt;/b&gt;: CC analysis gives us groove valleys; however, the edges of groove valley belong to the bad data region resulted from the optical device's inability to capture sloppy surface, and thus don't have obtainable depth values for stereo decoding. Therefore, the edge should be the inner and outer edge of two groove tops that wrap the groove valley of focus.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Edge detection is different from the general edge detection&lt;/b&gt;: in our case, the edge has specific semantics instead of the simple pixel-level object edge, e.g. groove edge has to be divided into an inner/outer pair. We have two choices: 1) do a generic pixel-level edge detection and try to classify the obtained edge set into the inner/outer edge subsets. 2) use semantics to somehow detect inner/outer edge respectively.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Difficulties in generic edge detection&lt;/b&gt;: We tried to use low-level edge detection; It then turned out that it's very hard to break the edge point set into inner/outer subsets. We tried to use simple thresholding by polar radius, however, it's not robust to use a single mean/median value to separate the edges of a groove in even the single FOV, especially when there are "stings" and groove damages; likewise, more complicated histogram-based thresholding is still not robust enough to tackle the diversity of the groove physical conditions. &lt;b&gt;Generic edge detection is not going to solve our problem&lt;/b&gt; &lt;b&gt;nice and clean&lt;/b&gt;.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Better solution lies in the tertiary-unit&lt;/b&gt;: we now know that the true edge lies in the groove top, the second element of the tertiary-unit. We thus perform the CC analysis to valley and top respectively, and figure out which two tops are the "wrappers" of the valley-of-interest. We then perform a pixel-level neighbor analysis on the valley, to find those edge pixels from either wrapper groove top. Because they are indexed during CC analysis, there is no need to classify them anymore.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Time optimization&lt;/b&gt;: Algorithm from #5, requires analyzing the entire groove; tests show that with Matlab implementation, it takes almost 1 minute to complete edge detection for all grooves in an FOV under current optical configuration, which means it takes 2 days to extract edges of 10-sec signal (3000 FOVs). Apparently this is unacceptable. We then turn to do it with angular windows, and in each window we only perform neighbor analysis on the upper and lower portion of the valley. By only analyzing 1/2 of the region, the time is reduced to about 25-second per FOV. A future C implementation can make it even more efficient.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Groove unwrapping and phase unwrapping: Groove has to be unwrapped and stitched. In the later fitting stage, monotonously increasing time stamps have to be present for the groove;&lt;b&gt; however, polar coordinates converted from Matrix coordinates and disc center can only account for the range of [0, 2*pi]; therefore phase unwrapping has to be performed during groove unwrapping across FOVs. &lt;/b&gt;&lt;ol&gt;&lt;li&gt;In Stotzer's approach, they conducted groove unwrapping during the second-level microfilm-scanning by using a turntable simulation hardware system and looked at a single groove within the FOV of their camera setting in their acquired digital images. In other words, in their digital images, the groove is already phase unwrapped via the hardward scanner.&lt;/li&gt;&lt;li&gt;Phase unwrapping in our approach can only be called upon after we figure out the FOV sequence in CC-based groove unwrapping. Before that in individual FOVs, the azimuths remain in the [0, 2*pi] range.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Stitching: The huge amount of data makes it impossible to performing any fitting and audio extraction on the entire range of groove data before downsampling; therefore groove unwrapping and fitting/differentiation still have to be done in small batches of FOVs as opposed to be done on a fully stitched array; the final stitching could only happen after downsampling through polynomial fitting. The stitching workflow now includes: &lt;ol&gt;&lt;li&gt;Image alignment to provide accurate 2D information for tracing grooves: prior to CC analysis and any filterings, align FOVs by adjusting their positions in the disc coordinate system (implemented before).&lt;/li&gt;&lt;li&gt;Groove unwrapping to give the FOV sequence along the audio signal; &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Locally stitching an array of grooves in sequence acquired from Step 2 for fitting and downsampling to best utilize memory.&lt;/li&gt;&lt;li&gt;After downsampling at an acceptable sampling-rate compromise between quality and size, e.g., 96kHz, stitch the groove sequence into an entire audio stream and perform stereo decoding.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;Plan&lt;br/&gt;&lt;ul&gt;&lt;li&gt;The coding for the entire workflow is complete; we'll go on testing and debugging till we get the sound. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Now that the microscope is back on. We will select a few album to scan. Now the question is which. What are on my mind are a 10-sec classical, a 10-sec jazz, and 10-sec rock or pop.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7959142469220581437?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7959142469220581437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7959142469220581437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7959142469220581437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7959142469220581437'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/11/recent-progresses.html' title='Recent progresses'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8591500454369253358</id><published>2008-11-17T13:14:00.001-08:00</published><updated>2008-11-17T13:14:24.197-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscroscope'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Microscope maintenance</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Tom came and solved variuos hardware and software problems that happened lately.&lt;/li&gt;&lt;li&gt;Stage drift problem is still under investigation at Veeco and the engineer promised that the future fix regarding this issue will be applied even after our free maintenance has expired.&lt;/li&gt;&lt;li&gt;Important knowledge about Vision and the microscope was gained.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Software: after efforts of debugging under instructions from the Veeco engineer, we found that the stage initialization failure was a software problem on the part of Vision instead of a stage hardware failure. This was solved by reinstalling original Vision software and its latest updates.&lt;/li&gt;&lt;li&gt;Software: Using PSI Hi-magnification filter from both the intensity&lt;br /&gt;window and Vision configuration would &lt;b&gt;significantly improve the groove&lt;br /&gt;bottom capture capability, though still imperfect.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Software: the time-saving "Auto-scan" feature is not recommended, because it usually generates noisy result, although it can stop VSI after obtaining certain amount of useful data.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Hardware: A misunderstanding is solved: Our 5X lens plus 2X magnification solution is essentially using 5X and a FOV enlarger, so the optical performance of our scheme won't be as good as a real 10X lens; this largely explained why Veeco showed as better groove bottom result with a low-mag lens that we can't reach (although they used a 20X).&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Hardware: previously I dicovered that playing with tip-tilt can improve the bottom capture; this is however unreliable solution, because due to the tilt, the captured result may not refelect the bottom but one side of the lowest sidewall.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Hardware: the lens were re-calibrated so that tip-tilt does not cause visible fringe drift.&lt;/li&gt;&lt;li&gt;Hardware: calibration can be done with wrenches to the head.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8591500454369253358?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8591500454369253358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8591500454369253358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8591500454369253358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8591500454369253358'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/11/microscope-maintenance.html' title='Microscope maintenance'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6920310707581215229</id><published>2008-10-14T15:48:00.001-07:00</published><updated>2008-10-14T15:48:27.757-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><title type='text'>Fixing remainder noise caused by coarse groove detaching process</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ul&gt;&lt;li&gt; While I'm running my current workflow on sinewave data on my lab machine, I realized in theory that the negative effect of our previous coarse groove detaching processis underestimated. See image below for the sting-like noises and see Detail for the explanation.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;img width='447' height='303' src='http://lh6.ggpht.com/li.beinan/SPUWz6PdZWI/AAAAAAAAAH8/VWC9H5DVFm4/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;li&gt;To fix such stings, a promising way is to make use of two useful information: 1) the consistent stylus shape leads to consistent groove/width numeric ratio; 2) the gap caused by dust and dirts are usually very thin. This way the correct shape of groove can be estimated and regenerated, or at least the sting-like noise can be suppressed to an extent.&lt;/li&gt;&lt;/ul&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;How could "the stings" mess up the workflow?&lt;/b&gt; Remember that we take 2D edges out of the the groove CC image, and then flatten it as 1D audio undulations; the stings, however,will be taken into account as part of the groove edge, and when flattened,&lt;b&gt; it could wrongly lengthen the data and create error in the "synchronicity" of the inner/outer edge data pair.&lt;/b&gt; &lt;b&gt;Given that there is overall 10% FOVs of attached groove images, this could cause serious problem in the output signal.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;From #1, we know that, before extracted edge points be stitched together, the stings have to be eliminated.&lt;/li&gt;&lt;li&gt;Unlike the shape discrepancy in a regular object, in theory, the stylus shape consistency ensures that groove crosssection field-angle should remain approximately constant, that is, the ratio of width/depth of the groove should be nearly constant;&lt;b&gt; therefore, we can first take statistics of such ratio out of good data as the reference and measure the offensive grooves in those FOVs that passed coarse detaching process against the reference, then fixing the shape of the top edges by applying the correct width/depth ratio.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Note that the depth of the corrected edge will be set to a constant value, i.e., the mean depth of the groove edges, assuming that top edges are usually flat.&lt;/li&gt;&lt;li&gt;An interest lesson learned here is that &lt;b&gt;the audio extraction workflow here includes nonlinear subprocesses&lt;/b&gt;: 1) Sometimes the filtering process is hardly complete without a further production procedure, e.g., the edge detection the groove width/depth computing have to be performed locally before we completely know how to fix the stings. 2) Also, once one FOV is fixed, if the updated data lie in the overlap region with neighbored FOVs, further iteration in those FOVs has to be made to reflect the related updates in our current focus FOV.&lt;/li&gt;&lt;/ol&gt;Plan&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Making this refined detaching work has become our top priority before any groove unwrapping process is made to our data.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6920310707581215229?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6920310707581215229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6920310707581215229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6920310707581215229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6920310707581215229'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/10/fixing-remainder-noise-caused-by-coarse.html' title='Fixing remainder noise caused by coarse groove detaching process'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/li.beinan/SPUWz6PdZWI/AAAAAAAAAH8/VWC9H5DVFm4/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8108007475088404285</id><published>2008-10-07T20:57:00.001-07:00</published><updated>2008-10-07T20:57:48.599-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='workflow'/><title type='text'>Post-restoration workflow</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Summary:&lt;/b&gt; after the groove restoration processes, i.e. detaching attached grooves and reattaching the broken ones, there is a series of work needed towards obtaining the audio. So far the coding for Step 1-10 is complete, thorough test is the next step. See details for notable aspects involved in each step.&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Raw top edges extraction&lt;/li&gt;&lt;li&gt;Raw bottom extraction: all valid points in the groove valley&lt;br/&gt;&lt;/li&gt;&lt;li&gt;FOV chain creation: the true stitching&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Main-thread: Stitching top edges + phase unwrapping&lt;/li&gt;&lt;li&gt;Main-thread: Stitching bottom + phase unwrapping&lt;br/&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Calibrating edge angular ranges of inner and outer edge, to make both edges equally long.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;* top edge fixing (stings as debris from restoration)&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Bottom thinning: 1D from 2D, according to inner edge angular distribution&lt;/li&gt;&lt;li&gt;Fixing invalid data along bottom by exploiting groove width/depth correlation, i.e., constant cross-section field angle.&lt;/li&gt;&lt;li&gt;Resampling groove edges and bottom at audio rate and polynomial fitting.&lt;/li&gt;&lt;li&gt;Audio generation.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Detail&lt;/b&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;The top edges that contain valid depth data are actually the edges of the inverted image of our previous CC analysis, where CCs are the groove "valleys" full of invalid data. So to obtain the top edges, the correct way is to redo CC analysis on the inverted image before performing edge detection. &lt;b&gt;NOTE&lt;/b&gt;: So far, pixel-level 8-neighbor analysis is pretty slow, 40 seconds per FOV; there needs to be a faster edge detection method in the future, a possible way is to divide a groove CC into segments, then by assuming the continuity of short segments, we can safely disregard most "inner" points with medium radii and only analyze those points with more extreme radii.&lt;/li&gt;&lt;li&gt;We only extract valid points as the raw bottom points for now, which is sufficient for creating the FOV chain for bottom, i.e., the stitched sequence of FOVs that leads to a continuous bottom thread after merging them. Note: These points are saved in a linear array.&lt;/li&gt;&lt;li&gt;Merging edge data from individual FOVs requires that we provide an FOV sequence. Because the three main threads: inner, outer top edges, and bottom can cross FOVs from slightly differnt directions, FOV sequences for all three of them could be different; they thus should be computed separatly by analyzing the "exit point" and its owner CC in successive FOVs. &lt;b&gt;NOTE&lt;/b&gt;: Where there are multiple successor FOVs, we use them to calibrate the overlap region in the edge-merging stage, but only use the single one FOV that carries more "new" data compared against the overlap region as our next node to be stitched in the FOV chain.&lt;/li&gt;&lt;li&gt;Stitching top edges are straightforward, because there is no invalid data in them. So we just collect them along the FOV chain. However, our stitching here is different from a regular image stitching because it involves the unwrapping of the grooves. That's to say, the resulting data should be angularly continuous. When creating the polar coordinates for individual FOVs for our previous processing, we never have enough clue to create an angular continuum for all revolutions of grooves; as a result, the angular range in the initial polar coordinates is equally [0, 2*pi] for all of them. They thus have to be phase-unwrapped.&lt;/li&gt;&lt;li&gt;Stitching bottom is similar to stitching top edges, except that we leave invalid data as they are here. Phase unwrapping is also performed here.&lt;/li&gt;&lt;li&gt;Top edges may be of different lengths due to the non-orthogonal orientation of grooves as they stretch through an FOV. These discrepancy needs to be eliminated for bottom thinning and later fitting. To achieve this goal, we only preserve the common angular range of both edges, and the bottom thinning will refer to only this range.&lt;/li&gt;&lt;li&gt;* This process is not yet implemented, because it won't be trivial to eliminate all strange "stings" on those former attached grooves. Until we know how badly such "stings" affect the audio output, I'd postpone this effort.&lt;/li&gt;&lt;li&gt;To obtain groove depth, we must have a single-pixel bottom to evaluate at each azimuth. Raw bottom from #2 (essentially from our measurement) leaves 2D bottom (a band of data); thus only one point will be picked based on a few rules. Currently , &lt;b&gt;the rules are&lt;/b&gt;: &lt;b&gt;the deepest point within a range from the center of the cross-section&lt;/b&gt; &lt;b&gt;is taken as the bottom; if no such point is present, mark this an invalid point&lt;/b&gt;. NOTE: the angular position is determined by inner edge, because it has a larger denser audio data density.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;To achieve clean stereo audio, depth data have to be all valid, thus the invalid bottom data need to be corrected. Based on the stylus cutting technique, we currently believe that 1) the deeper the stylus goes, the wider the groove becomes; that's to say, there is a simple relationship between the groove width and depth. 2) the distribution of radial positions of the bad data run bear some resemblance with that of the valid data run immediattely precede it. We thus calculate the off-center ratio of good data and apply the median value to its immediate successor. &lt;b&gt;NOTE:&lt;/b&gt; in good measurement results, missing bottom is not serious, so the effort of data correction is only for really bad situations.&lt;/li&gt;&lt;li&gt;Resulting audio data will be polynomially fitted at typical hi-quality audio rate (e.g., 96000Hz) here. &lt;/li&gt;&lt;li&gt;Output audio from the fitted data.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Note&lt;/b&gt;:&lt;br/&gt;From #6 on, everything works on the stitched data, the extremely long data chain, there therefore has to be a periodical data saving mechanism in case of unpredictable interruption to the computing.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8108007475088404285?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8108007475088404285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8108007475088404285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8108007475088404285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8108007475088404285'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/10/post-restoration-workflow.html' title='Post-restoration workflow'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4015188488895660266</id><published>2008-09-28T11:22:00.001-07:00</published><updated>2008-09-28T11:22:49.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Resampling: inevitable when extracting groove bottom</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Previously, we avoid any unnecessary resampling in the whole workflow of audio extraction.&lt;/li&gt;&lt;li&gt;However,&lt;br /&gt;if we would like to have stereo information, i.e., to have both groove&lt;br /&gt;top and bottom ready, it turns out that we have to sample all three&lt;br /&gt;threads (inner, outer top edges, and bottom).&lt;/li&gt;&lt;/ul&gt;Why resampling?&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Knowing that top edges can be extracted via image edge detection,&lt;br /&gt;we didn't need to angularly sample the top edges simply for getting the&lt;br /&gt;top alone; instead, we tried to get every edge point to minimize&lt;br /&gt;possible data lost with sampling.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;However, since the groove bottom can't simply be extracted as 1D&lt;br /&gt;sequence; rather, the bottom shows itself as a narrow band of pixels&lt;br /&gt;(the thin blue line) in the microscope-acquired image.&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;As a result, this bottom band needs to be reduced to a single point at each angular position along the revolving groove. &lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;This&lt;br /&gt;reduction has to refer to the position of the corresponding angular top&lt;br /&gt;edges, e.g., assume the "true" bottom point is at the the center of the&lt;br /&gt;cross-section of the groove at the position, we need to refer to the&lt;br /&gt;top edges at the same position, in other words, &lt;b&gt;bottom is dependent on top edges&lt;/b&gt;; &lt;b&gt;hence the top edges have to be sampled prior to the process of bottom extraction.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Resampling has to be done globally after chain up (stitching) the FOVs' top edges.&lt;br/&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If this sampling is to remain relatively accurate, interpolation should be introduced as opposed to nearest-neighbor approach.&lt;/li&gt;&lt;li&gt;However, interpolation should not just be performed in individual FOVs, because:&lt;br/&gt;&lt;br /&gt;  &lt;/li&gt;&lt;ol&gt;&lt;li&gt;the&lt;br /&gt;entire thread of edge points should be interpolated to equally-spaced&lt;br /&gt;coordinate with a common zero, which is difficult to be done in an&lt;br /&gt;individual FOV that knows little about the other FOVs along the groove&lt;br /&gt;ring.&lt;/li&gt;&lt;li&gt;such interpolation could also affect the process of buiding the FOV chain along the ring (the last step of stitching), because it would modify the edge geometry.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Phase&lt;br /&gt;unwrapping is needed before resampling. Previously, when creating the&lt;br /&gt;polar coordinate system for individual FOVs, each ring of groove is&lt;br /&gt;assigned with azimuths within 360 degrees; therefore, when unwrapped, the azimuths (phase) should be unwrapped into continuously increasing values as well.&lt;/li&gt;&lt;li&gt;Taking&lt;br /&gt;into account #1-3, we need to first extract the full edge data and&lt;br /&gt;stitch them up into the continuous line and then resample them from the&lt;br /&gt;beginning to the end.&lt;/li&gt;&lt;/ol&gt;Groove bottom extraction has to be multi-stage: chain-up bottom band first; single-point reduction and resampling later&lt;br/&gt;&lt;ol&gt;&lt;li&gt;As we explained in previous section, single-point reduction of groove bottom has to be done after resampling the top edges. Now we have to decide whether to postpone the entire bottom extraction till we have resampled edge or not.&lt;/li&gt;&lt;li&gt;It&lt;br /&gt;is not a good choice to postpone the bottom extraction because it means&lt;br /&gt;to trace back to individual FOVs after we have extracted the entire top&lt;br /&gt;edges. Tracing back from the continuous signal to FOV is hard, because&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Polar&lt;br /&gt;coordinates in individual FOV is without phase-unwrapping, making it&lt;br /&gt;difficult to hash the unwrapped grooves with the original wrapped&lt;br /&gt;version.&lt;/li&gt;&lt;li&gt;Doing a back-tracing requires that the continuous&lt;br /&gt;signal be segmented and associated with the original FOVs, which is too&lt;br /&gt;much work to maintain the correlation. &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;b&gt;A compromise would be to make bottom extraction a multi-stage process:&lt;/b&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Extract all candidate bottom points (2D band) in an FOV as a 1D vector and chain up all FOV data.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Perform resampling and single-point reduction to this pseudo-vector according to the resampling grid of unwrapped continuous top edges.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Caution: Bottom&lt;br /&gt;is not always available at any spot of an FOV as the top edges are. We&lt;br /&gt;know that it's difficult to perfectly extract bottoms in all parts of a&lt;br /&gt;disc; resulting from this inability, insome FOVs, if the overlap region does not contain any bottom information, we need to come up with at least one data to determine its succssor FOVs. &lt;/li&gt;&lt;li&gt;Note: this approach means that &lt;b&gt;the groove bottom extraction and stitching should be performed as individual processes from the top edge extraction.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4015188488895660266?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4015188488895660266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4015188488895660266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4015188488895660266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4015188488895660266'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/09/resampling-inevitable-when-extracting.html' title='Resampling: inevitable when extracting groove bottom'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8275921741277161944</id><published>2008-09-17T22:01:00.001-07:00</published><updated>2008-09-17T22:02:00.029-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='groove geometry'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Work during summer vacation: restoration, edge detection, and FOV topology</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Summary&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Program of detaching attached groove and reconnecting broken grooves are thoroughly tested and improved. See Detail #1.&lt;/li&gt;&lt;li&gt;Groove edge detection was improved. See Detail #2.&lt;/li&gt;&lt;li&gt;Algorithm of chain up grooves accross FOVs are under development, and currently the module of finding next FOV of an arbitrary CC of an arbitrary FOV is finished. See Detail #3 and #4.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Detaching&lt;br /&gt;program was run on the dataset of about 9 seconds of sinewave (2400&lt;br /&gt;images), in which about 200 images have attached groove and less than&lt;br /&gt;20 images have broken grooves. The result was encouraging:&lt;br /&gt;only one false alarm, i.e., a normal groove was recorgnized as attached&lt;br /&gt;groove, and all target images are successfully solved. Reconnecting&lt;br /&gt;broken grooves was successful on all target images and no false alarms.&lt;/li&gt;&lt;li&gt;Edge&lt;br /&gt;detection in MItAC includes two steps: finding groove edges, and&lt;br /&gt;distinguish the inner and outer edges. The first step was done with a&lt;br /&gt;pixel-level 8-neighbor&lt;br /&gt;algorithm and it works well. The second step was original ly one using&lt;br /&gt;a histogram filtering algorithm that proved not robust enough and was&lt;br /&gt;redesigned. &lt;/li&gt;&lt;ol&gt;&lt;li&gt;The original algorithm based on the&lt;br /&gt;assumption that a decision boundary in the radii of edge points can&lt;br /&gt;effectively separate inner and outer edges of a groove. However, this&lt;br /&gt;assumption only holds for groove segments that much resemble arcs of a&lt;br /&gt;perfect circle,&lt;br /&gt;where radius-based analysis apply to the contour of edges directly via&lt;br /&gt;the radii of polar coordinates; to groove with large undulations&lt;br /&gt;however, the assumption is not applicable: e.g., parts of the outeredge&lt;br /&gt;can be of similar radius as the inner edge (image examples to come). &lt;/li&gt;&lt;li&gt;The&lt;br /&gt;new algorithm thus does not try to globally segment inner and outer&lt;br /&gt;edge but gets down to pixel level. The rough idea was: For each edge&lt;br /&gt;point &lt;span style='font-style: italic;'&gt;P&lt;/span&gt;, find all points within the same CC along the same radius, if &lt;span style='font-style: italic;'&gt;P&lt;/span&gt; is of the longest radius, then it is from the outer edge, and if it is the shortest, then it is from the inner edge. &lt;/li&gt;&lt;li&gt;However,&lt;br /&gt;this idea suffers from the problem related to the rectangular&lt;br /&gt;tesellation dillema. We realize that the required angular&lt;br /&gt;sampling has its limited precision and points that are not&lt;br /&gt;perfectly lined up along the same radius, that is, from neighboring&lt;br /&gt;radii group can be mixed in, some of which may turn out to be of a&lt;br /&gt;shorter or longer radius than &lt;span style='font-style: italic;'&gt;P&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Thus, we modify our new algorithm to: For each edge&lt;br /&gt;point &lt;span style='font-style: italic;'&gt;P&lt;/span&gt;, find all points of shorter radii than &lt;span style='font-style: italic;'&gt;P&lt;/span&gt;, denoted as &lt;span style='font-style: italic;'&gt;S&lt;/span&gt;, and those of longer ones as &lt;span style='font-style: italic;'&gt;L&lt;/span&gt;. If size(S) &amp;gt; size(L), then &lt;span style='font-style: italic;'&gt;P&lt;/span&gt; is on the outer edge; otherwise &lt;span style='font-style: italic;'&gt;P&lt;/span&gt; is on the inner edge. &lt;/li&gt;&lt;li&gt;This modified new algorithm works well.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;We have developed single-FOV&lt;br /&gt;based all kinds of algorithms for filtering and audio extraction. Now&lt;br /&gt;the one last step is to connect thousands of FOVs to result in the&lt;br /&gt;audible audio signal. To this end, there are a few challenges to face:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;The groove directions differ across different FOVs, so the FOV topology regarding the complete audio signal is FOV-specific, and CC specific.&lt;/li&gt;&lt;li&gt;Further more, we are only interested in the inner, outer edge, and the groove bottom whthin a groove CC; therefore, we have to focus on the FOV topology for three of them,&lt;br /&gt;which are not necessarily consolidated. That is to say, the topology is&lt;br /&gt;line-specific, if we consider edges and groove bottoms as lines.&lt;/li&gt;&lt;li&gt;Because of the overlap scheme, multiple neighbors in the rectangular grid of FOVs can share the same segment of groove CC, thus the "next FOV" could be multiple.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;The module for finding the next FOVs works ok after limited test; it works as follows&lt;/li&gt;&lt;ol&gt;&lt;li&gt;For each edge of each CC in the FOV of interest, denoted as &lt;span style='font-style: italic;'&gt;F&lt;/span&gt;, take its last point, i.e., the one of max angle in the edge set, and see in all the CCs among &lt;span style='font-style: italic;'&gt;F&lt;/span&gt;'s 8-neighbors, which one contains this point in polar-coordinate sense. &lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;Plan&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Once&lt;br /&gt;the module of finding the next FOVs passes test, start testing the edge&lt;br /&gt;consolidating module, which generates the single edge that takes into&lt;br /&gt;account the discrepancy in edge data amon the overlapping FOVs.&lt;/li&gt;&lt;li&gt;Bug fix: because previously, polar coordinates were derived on&lt;br /&gt;the basis of single FOV, the azimuth unwrapping for polar coordinates&lt;br /&gt;of different rings of grooves was not implemented. It has to be fixed&lt;br /&gt;during FOV connection.&lt;/li&gt;&lt;li&gt;Groove bottom has segments where there&lt;br /&gt;are no measured points due to the optical limination in microscope&lt;br /&gt;acquisition.  They have to be generated using geometrical relationships&lt;br /&gt;in phonograph geometry; on the other hand, a single point among a lot&lt;br /&gt;at any groove cross-section has to be picked as the true bottom in audio extraction.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8275921741277161944?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8275921741277161944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8275921741277161944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8275921741277161944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8275921741277161944'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/09/work-during-summer-vacation-restoration.html' title='Work during summer vacation: restoration, edge detection, and FOV topology'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4859939056162346045</id><published>2008-07-12T11:59:00.001-07:00</published><updated>2008-07-12T11:59:09.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>[continue] Improved groove bottom capture ability</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;To fully catpure the groove bottom means to discard groove top.&lt;/li&gt;&lt;li&gt;The tip-tilt setting is groove-dependent, i.e., each groove demands a special tip-tilt in order to fully capture the groove bottom, e.g., if with Tip-tilt setting A, the bottom of Groove A of the sinewave track at 3 o'clock can be fully captured, the setting A can't guarantee to apply to the same spot on another disc.&lt;/li&gt;&lt;li&gt;In manual scan, we are able to find a sweet spot for an individual FOV where the quality of groove capture can be optimized. However, in an automated scan, it is fairly difficult to ensure that tip-tilt work for each single groove in each single FOV.&lt;/li&gt;&lt;/ul&gt;Plan&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Smartly divide the grid to have only one tip-tilt setting for each sub-grid so that the overall bottom capture would be better than using a global tiptilt for the entire grid.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4859939056162346045?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4859939056162346045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4859939056162346045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4859939056162346045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4859939056162346045'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/07/continue-improved-groove-bottom-capture_12.html' title='[continue] Improved groove bottom capture ability'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8151353153080453703</id><published>2008-07-10T09:00:00.001-07:00</published><updated>2008-07-10T09:00:03.890-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>[Continue] Improved groove bottom capture ability</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;I accidentally discovered that the groove bottom can still be captured with 10X magnification (Michelson interferometer). &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Basically the groove bottom and top welcome different tip-tilt settings. Using a tip-tilt in favor of capturing the bottom, we can get seriously better result, see image below:&lt;/li&gt;&lt;li&gt;&lt;img width='308' height='231' src='http://lh6.ggpht.com/li.beinan/SHYtV--wq5I/AAAAAAAAAFg/pJL0MKgRoBc/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;li&gt;See image previously acquired at the same spot with the tip-tilt in favor of capturing the top&lt;/li&gt;&lt;li&gt;&lt;img width='308' height='231' src='http://lh5.ggpht.com/li.beinan/SHYtyelRV_I/AAAAAAAAAFk/bUXuylu-xK4/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;The trick is in the tip-tilt. See Detail.&lt;/li&gt;&lt;li&gt;As another issue, I found that the 10X lens is now with some mechanical problem, when the tilt is being adjusted, it will move relative to the stage too; this causes us serious calibration trouble especially to my multi-stage scanning and needs to be fixed. I'm contacting Veeco engineers.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;Detail&lt;br/&gt;&lt;ul&gt;&lt;li&gt;During the manual initial focusing, we have to use fringes as visual cue to adjust the focus and tilt, &lt;b&gt;with the principle being "keep the number of fringes in the intensity view as few as possible"&lt;/b&gt;; &lt;b&gt;this principle, however, requires that the number of fringes can be easily perceptible to human vision, which leaves little choice to us but to focus exclusively on the groove top because the bottom would be too thin for us to observe the number of fringes.&lt;/b&gt; &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Then because the groove bottom is essentially the end of the sidewalls, &lt;b&gt;the optimal tip-tilt that ensures the best-capture of the top would be at an angle of about 45 degrees or greater with the optimal tip-tilt to the sidewall, and hence at a similar angle with the bottom.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Therefore, to ensure a better capture the groove bottom, at any groove angular position, &lt;b&gt;the turret tip-tilt should be fairly off the optimal tip-tilt of the groove top.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;It would be difficult to quantify a suitable tip-tilt for different groove topology; empirically, I found that keep the fringes parallel to the groove lines usually lead to better result.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8151353153080453703?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8151353153080453703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8151353153080453703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8151353153080453703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8151353153080453703'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/07/continue-improved-groove-bottom-capture.html' title='[Continue] Improved groove bottom capture ability'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/li.beinan/SHYtV--wq5I/AAAAAAAAAFg/pJL0MKgRoBc/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1032258388852027568</id><published>2008-07-06T14:26:00.001-07:00</published><updated>2008-07-06T14:26:11.982-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Done: retach broken grooves</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Before tracing grooves across FOVs, other than fixing the attached grooves, one more thing to do is to fix the broken grooves so that groove CCs are all in place to be traced.&lt;/li&gt;&lt;li&gt;This is done using the similar algorithm in previous post about detaching attached CC, except that in this case we aim at connecting CCs instead of holes.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;To detect broken CCs, we simply examine a CC to see if, in polar coordinate system, it touches the bounding box of the FOV within the same radius range relative to the disc center; if on of the two ends does not, then it is a broken groove CC.&lt;/li&gt;&lt;li&gt;This algorithm proved successful in fixing the 2 FOVs (in total 2400 FOVS) we found in the original data; the occurence of groove breaking is far less frequent than groove attaching in our data at hand.&lt;/li&gt;&lt;/ul&gt;Plan&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Work on groove tracing, i.e., starting from an arbitrary groove in an arbitrary FOV (angular position in that revolution), build a linked FOV-CC list across the FOV grid to lead us through the same groove till its end, taking FOV overlap into account.&lt;/li&gt;&lt;li&gt;Work on audio stitching of the audio sequence obtained from the FOV linked list.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1032258388852027568?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1032258388852027568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1032258388852027568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1032258388852027568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1032258388852027568'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/07/done-retach-broken-grooves.html' title='Done: retach broken grooves'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1822135343199742492</id><published>2008-07-03T13:22:00.001-07:00</published><updated>2008-07-03T13:26:58.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Done: detaching attached groove</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Description&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The new algorithm for detaching attached grooves is complete and tested with 36 images of various forms of groove-attaching. The algorithm succeeded for all of them.&lt;/li&gt;&lt;li&gt;See detail for the workflow of the updated algorithm.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Detail&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Detect attached grooves by applying a heuristic-based non-linear parametric classification function. The function uses the proportion of the area of the holes in the area of the host groove CC, and the width of the groove CC as heuristics.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src="http://lh6.ggpht.com/li.beinan/SG003yr9C3I/AAAAAAAAAFM/GVrR6MuHfFw/%5BUNSET%5D.png" alt="Attached groove with holes" height="272" width="362" /&gt;&lt;/li&gt;&lt;li&gt;Red bounding frame shows the attached groove CC (in blue); the yellow ones show the typical holes in the CC.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Align holes in grooves into chains in angular order; the true chains will be used as sector to separate attached grooves.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src="http://lh6.ggpht.com/li.beinan/SG0043nxOXI/AAAAAAAAAFQ/MQfghG1UK28/%5BUNSET%5D.png" alt="chains" height="269" width="361" /&gt;&lt;/li&gt;&lt;li&gt;The holes in blue is the true sector chain of holes, while the ones in yellow bounding frame are noises.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Remove noises in each chain; noises are holes that angularly overlap with bigger holes in the same chain.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src="http://lh5.ggpht.com/li.beinan/SG005tid28I/AAAAAAAAAFU/ww8uQfhadgI/%5BUNSET%5D.png" alt="intra-chain noises" style="width: 150px; height: 160px;" /&gt;&lt;/li&gt;&lt;li&gt;The&lt;br /&gt;holes in blue bounding frames are noises that are useless in connecting the holes angularly in the chain because there are other holes angularly overlap with them.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Remove noise chain if the sum of angular spans of the holes in the chain is too short.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The chain in yellow bounding frame in Figure #2 above is a noise chain and will be removed.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Thickening holes in each chain and fill the porous structure by examining the thickness and its hollowness at each angular cross-section of a hole.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src="http://lh5.ggpht.com/li.beinan/SG006QqKniI/AAAAAAAAAFY/xAo3WA2dKSw/%5BUNSET%5D.png" alt="thickening" style="width: 119px; height: 122px;" /&gt;&lt;/li&gt;&lt;li&gt;This is the result of thickening and pore-filling process; compare this with the same region in Step#3 before the process.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Connect consecutive holes in the same chain with sufficient connecting strength.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src="http://lh4.ggpht.com/li.beinan/SG007VzBMgI/AAAAAAAAAFc/kHKZRVy7Y7w/%5BUNSET%5D.png" alt="detach" height="263" width="350" /&gt;&lt;/li&gt;&lt;li&gt;This is the result after reconnecting holes; the previously attached groove has been successfully detached.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Fill the new holes (the connected holes may contain noise that's not completely filled) and redo CC analysis to create new groove CC composition in the FOV.&lt;/li&gt;&lt;/ol&gt;Future work&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A better algorithm for connecting holes so that the shape of the groove at the cut can be preserved and the "stings" as the side-product of a simple reconnection can be removed in place, because to remove the stings laterneeds a pattern recognition effort; in comparison, removing them when the hole structure is obvious could avoid the searching process. &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1822135343199742492?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1822135343199742492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1822135343199742492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1822135343199742492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1822135343199742492'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/07/description-new-algorithm-for-detaching.html' title='Done: detaching attached groove'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/li.beinan/SG003yr9C3I/AAAAAAAAAFM/GVrR6MuHfFw/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3254401525592240448</id><published>2008-06-26T15:29:00.001-07:00</published><updated>2008-06-26T15:29:02.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Further scanning the broken sample with 50X lens</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Ich pointed out two problems&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Full color range is missing in one of the previous data view; that was due to saturation when using ramping intensity in order to get the bottom data, usually it shouldn't be that way, but I pushed it in this FOV because lots of parts of the bottom are missing.&lt;/li&gt;&lt;li&gt;Veeco used 20X, which is actually the combination of the 50X (the other lens) and a 0.55 magnification multiplier.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;I then scanned a disc area with the 50x0.55 scheme where 10X lens (5X lens with 2X multiplier) couldn't get the bottom. See below.&lt;/li&gt;&lt;li&gt;&lt;b&gt;It turns out that with the 50X lens can generally catch the bottom that 5X could not; it can even catch parts of the sidewalls. As we introduced before, 50X uses a Mirau interferometer which handles close-up object better than the Michelson interferometer does, which the 5X lens adopts.&lt;/b&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;Blue&lt;br/&gt;&lt;ul&gt;&lt;li&gt;With 10X&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2D contour: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-1.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-1.png&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The middle part where bottom is missing is my area of interest&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Analysis: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-2.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-2.png&lt;/a&gt;&lt;b&gt;&lt;br/&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;with 50x0.55X&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2D contour: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-3.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-3.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Analysis: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-4.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_4-4.png&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Choice&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Using Mirau-based 50X may give us better quality, but even with its lowest magnification, the 27.5X, it will take 2.75 times more time to finish.&lt;/li&gt;&lt;li&gt;As a side factor, the 50X lens requires closer focus, which only 2mm above the height of the screw. This really worries me to use it in practical batch scan.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3254401525592240448?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3254401525592240448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3254401525592240448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3254401525592240448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3254401525592240448'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/further-scanning-broken-sample-with-50x.html' title='Further scanning the broken sample with 50X lens'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7493700851161461119</id><published>2008-06-26T13:28:00.001-07:00</published><updated>2008-06-26T13:28:26.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Results on Veeco sample records</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;According our own measurement and visualization using the optimized measurement configuration introduced previously, we can achieve the similar quality result with Veeco engineer showed in their slides.&lt;/li&gt;&lt;li&gt;See following sections titled with "Blue", "Red" for results for both the disc pieces with the blue and red label, respectively.&lt;/li&gt;&lt;li&gt;I noticed that Veeco engineer used several tricks in their presentation: &lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;1. They used grooves that are mostly silence, i.e., shallow and straight contour; &lt;br/&gt;&lt;/li&gt;&lt;li&gt;2. They scaled the image so that they look tall and steep. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;3. In the slides, the second groove data they showed are actually a subregion of a FOV and thus visually scaled, it could not have been from the 50x according to my test because  the result from a 50X lens would be even bigger than this; &lt;br/&gt;&lt;/li&gt;&lt;li&gt;4. All data are interpolated, from an interpolated image it's very hard to tell the broken part if there are actually good data, and in the analytical graph they only presented one cross-section, which is surely a good data spot.We also didn't realized that in Vision's analytical output, the z and x/y axis are not scaled with 1:1 ratio, rather, z:y~=1:5. This trick makes the groove valley looks deeper than it actually is. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;See the last Detail section for a more analysis&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Everything below was tested with various configurations to make sure they are the best I can get in terms of the bottom-capture capability.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;Blue&lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Disc Area 1 (good)&lt;/b&gt;&lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2D contour: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-1.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;3D without interpolation: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-2.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;3D with interpolation: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-3.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-3.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Analysis: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-6.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_1-6.png&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The groove of interest has a half-field-angle of 43.63degrees.&lt;/b&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;This FOV is similar to the first one in Veeco slides.I got the similar result.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Disc Area 2 (not too good)&lt;br/&gt;&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2D contour: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-1.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;3D without interpolation: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-2.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;3D with interpolation: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-2x.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-2x.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Analysis: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-6.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_2-6.png&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The groove of interest has a vertical half-field-angle of 39.14degrees.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Disc Area 3 (bad)&lt;br/&gt;&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2D contour: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-1.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;3D without interpolation: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-2.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-2.png&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;li&gt;3D with interpolation:&lt;b/&gt; &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-3.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-3.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Analysis: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-5.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-5.png&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The groove of interest has a vertical half-field-angle of 50.86degrees, at the missing bottom position.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Disc Area 3 sub-region (good)&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;3D contour: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-11.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-11.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Analysis: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-12.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_blue_3-12.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;This image is visually scaled. The vertical half-field-angle is 46.80degrees&lt;/b&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Red &lt;br/&gt;&lt;ul&gt;&lt;li&gt;Data Area 1 (good)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2D contour: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-1.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-1.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;3D without interpolation: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-2.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-2.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;3D with interpolation: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-3.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-3.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Analysis: &lt;a href='http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-4.png'&gt;http://coltrane.music.mcgill.ca/mitac/data/62.bottom/broken_red_1-4.png&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;The groove of interest has a vertical half-field-angle of 46.87degrees&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Detail&lt;br/&gt;&lt;ul&gt;&lt;li&gt;I noticed that the missing of bottom mostly happens when the groove width changes abruptly. Considering the stereo cutting, the lateral change of width relates to a vertical change of depth as well.&lt;/li&gt;&lt;li&gt;This way, in the tangential direction, there may appear to be a sudden decreasing of the field angle in the middle of the groove depth range, thus forming a steeper slope, or even a corner, at that point. Scanning may have may have a greater chance to miss the bottom on spots like this.&lt;/li&gt;&lt;li&gt;For a sinewave, such points appears most frequently at the slope between the Pi/2 and the -Pi/2 portion, i.e., the slope between the summit and the abyss. So it kinda makes sense in my previous results that these portions are the ones that got lost the most often.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7493700851161461119?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7493700851161461119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7493700851161461119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7493700851161461119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7493700851161461119'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/results-on-veeco-sample-records.html' title='Results on Veeco sample records'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5024119605818004856</id><published>2008-06-25T12:04:00.001-07:00</published><updated>2008-06-25T12:04:45.677-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Rethinking about missing bottom groove</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;even with ramp intensity, for certain disc we still cannot get the entire bottom groove, see picture below&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img width='311' height='232' src='http://lh6.ggpht.com/li.beinan/SGKVx6aISdI/AAAAAAAAAEY/5x0iNvQfFfo/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Then we have other discs with which we can get the full content of the bottom, see picture below from a random music record we have.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img width='312' height='234' src='http://lh3.ggpht.com/li.beinan/SGKVlUADOOI/AAAAAAAAAEU/jdnbnzh04w0/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;br /&gt;    &lt;div align='left'&gt;Notice that when turret is flat relative to&lt;br /&gt;the disc surface, the missing parts are almost always the part between&lt;br /&gt;the highest portion (peak) and the lowest portion (valley) of the sine&lt;br /&gt;wave, i.e., the part with relatively steeper slope. Also notice that the field angle of the sidewall is perpendicular to the "sidewall" of the part of sine wave, but they pose the exact same problem to the microscope. Thus they are&lt;br /&gt;missing just like the sidewalls are because they have too great field&lt;br /&gt;angles for the optical system to capture the detail. Tilting the turret&lt;br /&gt;according to such situation may create better results but that's&lt;br /&gt;impossible without the TCP/IP control.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;Solution&lt;br/&gt;&lt;ul&gt;&lt;li&gt;For current research stage, always use a better disc for the scan. Test the disc to make sure the signal-of-interest has obtainable bottom and then start large-scale scanning.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5024119605818004856?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5024119605818004856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5024119605818004856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5024119605818004856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5024119605818004856'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/rethinking-about-missing-bottom-groove.html' title='Rethinking about missing bottom groove'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/li.beinan/SGKVx6aISdI/AAAAAAAAAEY/5x0iNvQfFfo/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3432509155556293220</id><published>2008-06-25T09:31:00.001-07:00</published><updated>2008-06-25T09:31:42.114-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Improved groove bottom capture ability</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Previously for certain discs, large part of groove bottom tends to get lost during scanning even with enough depth.&lt;/li&gt;&lt;li&gt;Now I found that it was due to the fact that to ensure the same capture quality, the groove bottom requires higher intensity that exceeds the saturation limit of the groove top, i.e., previously when we ensured that the scan intensity doesn't saturate for the groove top, we virtually lowered the chance to get the bottom with the same quality.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Previous result with fixed intensity&lt;/li&gt;&lt;li&gt;&lt;img width='292' height='219' src='http://lh4.ggpht.com/li.beinan/SGJy05mypVI/AAAAAAAAAEQ/u0mlaSrRAbA/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The best solution I found to improving this is to use the Vision's "ramp intensity" function, which uses an increased intensity from a specified (hard-coded) range. This way, we can set the intensity to be higher than the saturation threshold to the groove top when scanning the bottom, so that more data could be captured.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img width='293' height='220' src='http://lh5.ggpht.com/li.beinan/SGJpHX89CMI/AAAAAAAAAD8/eauzq3UuzcQ/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;li&gt;Without ramp intensity, but using a higher intensity&lt;/li&gt;&lt;li&gt;&lt;img width='292' height='220' src='http://lh3.ggpht.com/li.beinan/SGJpZlGKpEI/AAAAAAAAAEE/qWcE9b0r9AY/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Note that there is another option called "dual scan", which can perform two measurements at different depth range with independent intensity, and skip depth range in-between. This, however, appears to provide little improvement over ramp intensity method, and have the potential risk to miss the bottom range. See picture result&lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img width='293' height='220' src='http://lh3.ggpht.com/li.beinan/SGJrpkf2NII/AAAAAAAAAEI/UsUtTa3Aw0U/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Tilt does appear to affect the bottom capture ability; an ill-tilted scan did yielded results that are different in the bottom shape from a properly tilted scan (see all above pictures). See picture of the ill-tilted result below. Note that in the missing part of bottom from both approaches are different. This may means to have a full capture bottom of certain discs, we need some kind of adaptive tilting during the scanning. I need to consult Veeco engineer about this. According to their previous comments, we need the TCP/IP option to do this.&lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img width='292' height='219' src='http://lh5.ggpht.com/li.beinan/SGJsNcJNg-I/AAAAAAAAAEM/rSk3V3nifu0/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3432509155556293220?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3432509155556293220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3432509155556293220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3432509155556293220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3432509155556293220'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/improved-groove-bottom-capture-ability_9384.html' title='Improved groove bottom capture ability'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/li.beinan/SGJy05mypVI/AAAAAAAAAEQ/u0mlaSrRAbA/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-3180866749364669415</id><published>2008-06-25T09:24:00.001-07:00</published><updated>2008-06-25T09:24:32.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Improved groove bottom capture ability</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Previously for certain discs, large part of groove bottom tends to get lost during scanning even with enough depth.&lt;/li&gt;&lt;li&gt;Now I found that it was due to the fact that to ensure the same capture quality, the groove bottom requires higher intensity that exceeds the saturation limit of the groove top, i.e., previously when we ensured that the scan intensity doesn't saturate for the groove top, we virtually lowered the chance to get the bottom with the same quality.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Previous result with fixed intensity&lt;img src='http://lh5.ggpht.com/li.beinan/SGJpRnWgNDI/AAAAAAAAAEA/enKcp57bzs8/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The best solution I found to improving this is to use the Vision's "ramp intensity" function, which uses an increased intensity from a specified (hard-coded) range. This way, we can set the intensity to be higher than the saturation threshold to the groove top when scanning the bottom, so that more data could be captured.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src='http://lh5.ggpht.com/li.beinan/SGJpHX89CMI/AAAAAAAAAD8/eauzq3UuzcQ/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;li&gt;Without ramp intensity, but using a higher intensity&lt;img src='http://lh3.ggpht.com/li.beinan/SGJpZlGKpEI/AAAAAAAAAEE/qWcE9b0r9AY/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Note that there is another option called "dual scan", which can perform two measurements at different depth range with independent intensity, and skip depth range in-between. This, however, appears to provide little improvement over ramp intensity method, and have the potential risk to miss the bottom range. See picture result&lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src='http://lh3.ggpht.com/li.beinan/SGJrpkf2NII/AAAAAAAAAEI/UsUtTa3Aw0U/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Tilt does appear to affect the bottom capture ability; an ill-tilted scan did yielded results that are different in the bottom shape from a properly tilted scan (see all above pictures). See picture of the ill-tilted result below. Note that in the missing part of bottom from both approaches are different. This may means to have a full capture bottom of certain discs, we need some kind of adaptive tilting during the scanning. I need to consult Veeco engineer about this. According to their previous comments, we need the TCP/IP option to do this.&lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;img src='http://lh5.ggpht.com/li.beinan/SGJsNcJNg-I/AAAAAAAAAEM/rSk3V3nifu0/%5BUNSET%5D.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-3180866749364669415?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/3180866749364669415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=3180866749364669415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3180866749364669415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/3180866749364669415'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/improved-groove-bottom-capture-ability.html' title='Improved groove bottom capture ability'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/li.beinan/SGJpRnWgNDI/AAAAAAAAAEA/enKcp57bzs8/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1005248035952148887</id><published>2008-06-23T11:14:00.001-07:00</published><updated>2008-06-23T11:14:13.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>scanning; detaching attached groove</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;See WORD report here:&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/0.report/30.detach/080623.doc'&gt;http://132.206.14.194/~kakyo/0.report/30.detach/080623.doc&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1005248035952148887?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1005248035952148887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1005248035952148887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1005248035952148887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1005248035952148887'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/scanning-detaching-attached-groove.html' title='scanning; detaching attached groove'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8927304602776676346</id><published>2008-06-17T10:01:00.001-07:00</published><updated>2008-06-17T10:01:09.363-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>iterative scanning; detaching attached grooves</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;The iterative scanning, a sampling based coarse-to-fine approach, went pretty smoothly except for a detail: because each new iteration deals with the failed measurements from one previous iteration, they form a tree structure as their relationships and traversing the tree under either depth-first or breadth-first is inevitable. It is desire to build such a history tree to give a convenient hint to human operator which branch to take after a certain iteration. It's under development. See Detail #1, #2&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Detaching the attached grooves was not robust enough to handle even our data at hand. So it has been under redesign. See Detail #3, #4&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Each iteration has its single parent iteration and multiple child iterations, each corresponding to one of the Type 1, 2, 3, 4, i.e., perfect, missing-top, missing-bottom, or missing-both; whenever an iteration is over, it branches to one or more of Type 1, 2, 3, 4. If all FOVs in the iteration result are Type&lt;font color='#000000'&gt; 1, then it marks the end of current iteration&lt;/font&gt;, i.e., it becomes a leaf node of the history, and it notifies its parent node of this; the parent iteration then checks if all children iterations are done, if so, it marks itself done. We use auto-generation of folder structure to maintain the tree because accessing folders and files are more convenient at this point.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;At this point, no automatic instruction about which branch to take next is given, because the operation made at each iteration node is completely manual, and the human operator should have freedom in selecting which branch as the next iteration because we assume they are independent to each other at the moment (not sharing groove top height). In short, we only indicate which ones are finished and then human operator can pick from those that are not.&lt;/li&gt;&lt;li&gt;Previously we use groove "width" as the only hint as to discover attached grooves, this turns out to be ambiguous when thousands of grooves show quite big a variety of possible width values. It is also not enough to define the attached grooves based on "holes" in it, i.e., the heterogeneous blobs inside a groove CC, because there tend to be lots of noises. We then combined multiple heuristics into a parametric classification function, which incorporated width, number of blobs, and their areas as the parameters; based on the output of the function, the grooves are classified. In here, widths are measured against stats from surrounding FOVs to make it adaptive to the local situation and thus robust.&lt;/li&gt;&lt;li&gt;Sometimes one attached groove can contain multiple grooves, we need to figure out how many and how to find the sector holes and merge them properly as sectors. Then we need to rule out aligned holes that are not sector holes, and noises that could cause a wrong trajectory of merging. This is under development.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8927304602776676346?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8927304602776676346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8927304602776676346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8927304602776676346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8927304602776676346'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/iterative-scanning-detaching-attached.html' title='iterative scanning; detaching attached grooves'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8905209215622280048</id><published>2008-06-11T15:51:00.001-07:00</published><updated>2008-06-11T15:51:20.971-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='Fixture'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Fixture</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Due to the inevitable drift of disc during a collision that happened in stage initialization,  a solid fixture that can ensure the stillness of disc during the stage movement is needed.&lt;/li&gt;&lt;li&gt;It has been proved that single screw fixture that goes through only the center hole of a disc does not prevent the drift from happening.&lt;/li&gt;&lt;li&gt;The casual platter that we used before introduced larger drift than without it, probably due to its hollow structure along the vertical dimension, leaving a large portion of the screw that goes though it in the air with nothing to hold on to.&lt;/li&gt;&lt;li&gt;Because the disc is larger than the stage, the part of disc that goes over the stage front edge is pulled down by gravity, causing a non-natural warping (bending), so that the part of disc always require a deep scan depth or a very low focus position. According to my empirical test, the warping caused the top edges to be 0.2mm lower than when they sit on the solid part of the stage in the natural way.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;We planned a few things for the design of the fixture. See Detail.&lt;/li&gt;&lt;/ul&gt;Detail&lt;br/&gt;&lt;ol&gt;&lt;li&gt;The fixture should be created with professional manufacturer, either from mechanics department at McGill or other hardware factories.&lt;/li&gt;&lt;li&gt;The fixture should be solid (as opposed to hollow) and heavy, and have multiple screws going through it and onto the stage to ensure its own stillness&lt;/li&gt;&lt;li&gt;The disc and fixture should interface well so that the loading and unloading of disc is convenient enough, in the mean time, the disc should not drift after it is loaded.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;The fixture should be big enough to hold the entire disc to avoid the gravitational warping. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;The fixture and the stage together should guarantee a flat surface that introduces no warping to the disc.&lt;/li&gt;&lt;li&gt;The screws or any other widgets should have a head thin enough so leave sufficient margin between the lowest possible turret position and the heads of the screws, to avoid crashing.&lt;/li&gt;&lt;li&gt;As a remotely related factor, the exposed cable in the rear part of the microscope may be hit by the stage and needs to be fixed.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;Progress and Plan&lt;br/&gt;&lt;ol&gt;&lt;li&gt;The stage flatness stats have been collected and sent to Darryl.&lt;/li&gt;&lt;li&gt;The required vertical margin to be reserved for designing the screws is also sent to Darryl. (3.7mm)&lt;br/&gt;&lt;/li&gt;&lt;li&gt;I've sent request for stage specification and waiting for the result.&lt;/li&gt;&lt;li&gt;We need someone good at CAD to draw the design for us, probably Antoine from CAML or someone that Darryl knows.&lt;/li&gt;&lt;li&gt;The collision should be mentioned again to the Veeco engineers and we may need a field engineer to come and see if the intensity of the collision can be reduced.&lt;/li&gt;&lt;li&gt;Go on with the multi-stage scan for our sine-wave signal before the fixture is ready.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8905209215622280048?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8905209215622280048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8905209215622280048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8905209215622280048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8905209215622280048'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/fixture.html' title='Fixture'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-9192796257757488679</id><published>2008-06-10T12:37:00.000-07:00</published><updated>2008-06-10T13:18:39.859-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Multi-stage scanning implemented and tested</title><content type='html'>   	&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt; 	&lt;title&gt;&lt;/title&gt; 	&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Linux)"&gt; 	&lt;style type="text/css"&gt; 	&lt;!-- 		@page { size: 21.59cm 27.94cm; margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Description&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The proposed multi-stage scanning 	with configurations optimized for minimum time consumption is 	implemented and tested. With faster rough scan and image analysis, 	the multi-stage scanning first takes samples from the the entire 	scan area, then estimate a finite number of scanning configurations 	(namely the groove top edge height) that are time-efficient for 	several subdivisions of the entire area, and finally applies such 	configurations to the subregions that the samples represent in a 	real scan.  This method proves to be very effective and take much 	shorter time to finish for at least the test record at hand. See 	Detail for more.&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Currently the process is 	semi-automatic, i.e., each re-measurement (iteration) has to be 	operated by hand. With the Matlab toolbox, the process of 	configuration update and re-measurement hopefully can be fully 	automated.&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Detail&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The sampling was very successful 	in estimating the entire depth distribution, that's to say, each of 	the resulting batch scans was a complete success in capturing the 	top edges and bottoms without human intervention, by using the same 	batch-specific scanning configuration.&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Time cost comparison:&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The test was on a quarter of a 	single groove revolution, under 10X magnification, which comprizes 	704 FOVs; the fixed scan-depth is 350um, 1X vertical scan speed is 	5um/sec.&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;In the sample-scan phase of the 	multistage method, a sample set of 178 FOVs was used (a quarter of 	the total FOVs); the result consists of 8 batches of FOVs, meaning 	that 8 manual measurement is needed on these batches in the fine 	scanning; and during the estimation, 8 iteration was needed, but all 	performed at 11X vertical scan speed, with fixed scan-depth of 	100um.&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Single-stage measurement (1X scan 	speed): time = n_frames * (Depth /vertical_scan_speed) = 704 * 350 / 	5 /3600 = 13.60 (hours).&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Multi-stage measurement: time = 	sigma(time_for_sampling_iteration) + 	sigma(time_per_batch_in_real_scan) = 514*100/(11*5)/3600 + 	704*100/5/3600 = 4.16 (hours)&lt;/p&gt; 	&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The multi-stage measurement takes 	only 1/3 time of the single-stage method, which matches our previous 	theory.&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;ol start="3"&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Tree history: it is worth 	mentioning that during the sampling and iterative coarse 	measurement, sometimes one of the failure groups (missing top, 	bottom or both) can generate another type of failure after a 	configuration updates; under such circumstances, making it necessary 	to branch out the configurations to deal with the new difference in 	failure types; we currently use a “depth first” approach 	continuously untill all failure branches are solved. This is best 	implemented with a history tree that carries all branching 	information, including error types, grid sub-division updates, and 	iteration index. But it appears too complicated to handle at this 	point when we only have less than 10 iterations in total. So I 	currently used a very simple automatic directory renaming (marking) 	technique to minimize the confusion of iterations for the human 	operator.&lt;/p&gt; 	&lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-9192796257757488679?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/9192796257757488679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=9192796257757488679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9192796257757488679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/9192796257757488679'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/06/multi-stage-scanning-implemented-and.html' title='Multi-stage scanning implemented and tested'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-752645883985492630</id><published>2008-05-29T12:47:00.001-07:00</published><updated>2008-05-29T12:47:53.918-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Vision TCP/IP and Matlab optinal packages</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;em/&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Vision has optional packages that allows external Matlab routines to control the instrument's behavior and build measurement-analysis-display workflow between Vision and Matlab.&lt;/li&gt;&lt;li&gt;Communication between Vision and Matlab can be built through a TCP/IP protocol, in which stage position, turret z-position, tilt can all be controled.&lt;/li&gt;&lt;li&gt;However, a few issues concerning the unattended batch scanning are not clarified in the document:&lt;/li&gt;&lt;li&gt;Whether or not the batch scanning is interruptable and resumable when Matlab analysis and control take over is unknown; if we need to analyze the result and determine the new turret position (focus), we need to suspend the batch scanning and then deliver the new parameters to the on-hold Vision process, and then let Vision resume the grid scheme without shutting down the ongoing batch.&lt;/li&gt;&lt;li&gt;Whether or not the custom parameters in the Matlab package communication can be updated without restarting Vision. &lt;br/&gt;&lt;/li&gt;&lt;li&gt;Could the parameters passed on to Vision be anything, e.g., unrelated to any Vision processes?&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-752645883985492630?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/752645883985492630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=752645883985492630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/752645883985492630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/752645883985492630'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/vision-tcpip-and-matlab-optinal.html' title='Vision TCP/IP and Matlab optinal packages'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4620412110292170036</id><published>2008-05-27T12:43:00.000-07:00</published><updated>2008-05-27T12:44:00.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weekly Meeting'/><title type='text'>Ich meeting</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;ol&gt;&lt;li&gt;Graph should provide intuitive information that needs little verbal/text explanation, e.g., scale of the data should immediately convey the order of magnitude.&lt;/li&gt;&lt;li&gt;Test with various discs, starting with small regions, and keep all the records.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4620412110292170036?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4620412110292170036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4620412110292170036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4620412110292170036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4620412110292170036'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/ich-meeting.html' title='Ich meeting'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1974247087726400463</id><published>2008-05-27T11:50:00.001-07:00</published><updated>2008-05-27T11:50:21.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Adaptive batch scan implementation (1)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Please refer to the document:&lt;br/&gt;&lt;a href='http://132.206.14.194/%7Ekakyo/54.batch_scan/scan_grid_imp.doc'&gt;http://132.206.14.194/~kakyo/54.batch_scan/scan_grid_imp.doc&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1974247087726400463?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1974247087726400463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1974247087726400463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1974247087726400463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1974247087726400463'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/adaptive-batch-scan-implementation-1.html' title='Adaptive batch scan implementation (1)'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5264684993591812307</id><published>2008-05-20T00:28:00.001-07:00</published><updated>2008-05-20T00:28:24.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Optimization for grid-based batch scan</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div style=''&gt;Please see write-up here&lt;br/&gt;&lt;a href='http://kakyolab.xicp.net/0.report/29.batch/Towards%20the%20automated%20batch%20scan.doc'&gt;http://kakyolab.xicp.net/0.report/29.batch/Towards%20the%20automated%20batch%20scan.doc&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5264684993591812307?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5264684993591812307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5264684993591812307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5264684993591812307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5264684993591812307'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/optimization-for-grid-based-batch-scan.html' title='Optimization for grid-based batch scan'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8272716825459383938</id><published>2008-05-13T11:49:00.001-07:00</published><updated>2008-05-13T11:59:22.526-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Fitting the raw edge</title><content type='html'>Description&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Spline and polynomial fits were investigated; it turned out that spline fit is essentially piece-wise polynomial fit with bounded error by setting up knots/breaks and order.&lt;/li&gt;&lt;li&gt;Previously there was a misunderstanding of mine that thinks the textbooks were trying to dismiss polynomial fitting. It turns out that they only dismiss global polynomial fitting, compared to spline fitting in the piece-wise polynomial sense. Therefore, piecewise polynomial fitting that Haber used is essentially valid.&lt;/li&gt;&lt;li&gt;I made several tests and comparisons between spline and polynomial fitting using Matlab. See report:&lt;a href="http://kakyolab.xicp.net/0.report/27.fitting/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/27.fitting/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;See Detail&lt;/li&gt;&lt;/ul&gt;Detail&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For both polyfit and spline fit, two different approaches are used:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;For each point along the resampled edge angular position sequence, make each point the center and take a window around it, fit the real edge points that fall into the window to the resampled points, in a point-by-point fashion, shown in Row 2-5.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Divide the resampled edge angular position sequence into windows (with overlap) and fit the whole group of resampled points within each window to the real edge points in that window, shown in Row 6-9&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;It turned out that the fitted result from spline is very unlike sinewave, but pretty similar to the raw edge, meaning that spline actually has a better simulation and weak smoothing effect; polynomial, in comparison, has a better smoothing and gives us sine shape, but not necessarily preserve the original waveshape.&lt;/li&gt;&lt;li&gt;I'm still not sure which one should be used.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8272716825459383938?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8272716825459383938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8272716825459383938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8272716825459383938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8272716825459383938'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/fitting-raw-edge.html' title='Fitting the raw edge'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1911956685645815487</id><published>2008-05-13T11:44:00.000-07:00</published><updated>2008-05-13T11:48:34.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Current solution to Saturation</title><content type='html'>Description&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The saturation under the condition of long scan depth is temporarily solved by combining two measures&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Increasing modulation threshold (rule out more invalid points).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dividing the entire scanning surface into smaller areas, scan them one by one and adjust the measurement parameters individually.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The reason why threshold matters to the saturation is not understood yet.&lt;/li&gt;&lt;li&gt;The scan may take another 2-3 days to finish (taking into account any possible re-scanning of bad data)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1911956685645815487?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1911956685645815487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1911956685645815487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1911956685645815487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1911956685645815487'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/current-solution-to-saturation.html' title='Current solution to Saturation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-2955132940844240100</id><published>2008-05-09T12:41:00.001-07:00</published><updated>2008-05-09T12:41:48.722-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanning'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Grid Batch Measurement Pitfall</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;h4 id='subjcns!F48A59BF08677C6!2502' style='margin-bottom: 0px;'&gt;&lt;a href='http://kakyoism.spaces.live.com/blog/cns%21F48A59BF08677C6%212502.entry'&gt;Grid Batch Measurement Pitfall&lt;/a&gt;&lt;/h4&gt;&lt;div class='bvMsg' id='msgcns!F48A59BF08677C6!2502'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;New measurment of test record encountered a difficulty regarding the global scan depth settings.&lt;/li&gt;&lt;li&gt;Remember we had to apply a relatively large global depth to accommodate a wide range of depth gap due to the disc surface warp.&lt;/li&gt;&lt;li&gt;However,&lt;br /&gt;it is discovered that such a setting causes scan saturation for quite a&lt;br /&gt;lot of FOVs, i.e., acquired depth data were distorted. The exact reason&lt;br /&gt;is not fully understood yet, although a few evidence was obtained&lt;br /&gt;through repeated scanning with different parameters, such as scan depth&lt;br /&gt;and intensity:&lt;ul&gt;&lt;li&gt;When this depth is large (e.g., 300um) and the&lt;br /&gt;turret tilt is not optimized for the FOVs, in which the groove depth&lt;br /&gt;range is located around the deepest portion of our scan depth range,&lt;br /&gt;the resulting depth image tend to get saturated.&lt;/li&gt;&lt;li&gt;Given a FOV&lt;br /&gt;that's naturally tilted relative to the turret. Let Scan #1 be a&lt;br /&gt;reference scan (normal result) with its depth range adapted to the&lt;br /&gt;target FOV's without tilt correction, Scan #2 a scan with long depth&lt;br /&gt;range regarding the target groove without tilt correction, and Scan #3&lt;br /&gt;with same depth range but with tilt correction; all three scans were&lt;br /&gt;performed on the same FOV. A quick test reveals that the distortion of&lt;br /&gt;depth data of #2 could be so large that the depth level of measured&lt;br /&gt;groove top edges of #2 could be as low as that of the groove bottom of&lt;br /&gt;#1. This is an obvious distortion. However, #3 generates the similar&lt;br /&gt;result with #1.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;By chaning the intensity to a lower value but without tilt correction didn't remove the saturation.&lt;/li&gt;&lt;li&gt;&lt;a href='http://kakyolab.xicp.net/0.report/26.saturation/saturation_1.tif' target='_blank'&gt;Scan #1: http://kakyolab.xicp.net/0.report/26.saturation/saturation_1.tif&lt;/a&gt; &lt;img src='http://kakyolab.xicp.net/0.report/26.saturation/saturation_1.tif' style=''/&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://kakyolab.xicp.net/0.report/26.saturation/saturation_2.tif'&gt;Scan #2: http://kakyolab.xicp.net/0.report/26.saturation/saturation_2.tif&lt;br/&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://kakyolab.xicp.net/0.report/26.saturation/saturation_3.tif' target='_blank'&gt;Scan #3: http://kakyolab.xicp.net/0.report/26.saturation/saturation_3.tif&lt;/a&gt;&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;Plan&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Because&lt;br /&gt;tilt setting is static during batch measurement and it is empirically&lt;br /&gt;safe to assume depth consistency between surface areas that are close&lt;br /&gt;to each other, the ways to avoid saturation would probably one of the&lt;br /&gt;two approaches&lt;ul&gt;&lt;li&gt;Finely sub-divide the target region into smaller ones, and perform individual grid measurements on them:&lt;ul&gt;&lt;li&gt;Pros: this is the easiest way in terms of development&lt;/li&gt;&lt;li&gt;Cons: the surface situation is unpredictable; therefore the sub-division can hardly be designed systematically.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Dynamically&lt;br /&gt;monitoring the scanning intensity window, do a fancy image recognition&lt;br /&gt;to warn the scanning process about the absence of interference patterns&lt;br /&gt;(moving stripes), then automate the GUI program of Vision to restart&lt;br /&gt;the scanning.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Pros: the ideal way for mass production.&lt;/li&gt;&lt;li&gt;Cons: requires significant development effort, invoving image recognition and window process management.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;For now, I would go with the subdivision for the current data.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-2955132940844240100?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/2955132940844240100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=2955132940844240100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2955132940844240100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2955132940844240100'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/grid-batch-measurement-pitfall.html' title='Grid Batch Measurement Pitfall'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-6216091773433227277</id><published>2008-05-06T10:55:00.001-07:00</published><updated>2008-05-06T10:55:23.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groove geometry'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='stitching'/><title type='text'>scanning long sine wave: vos grid calculation fixed</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Description&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Last week I was about to start scanning a long sine wave, using Vision's grid stitching function. My previous script to calculate the grid ended up giving me a weird starting stage position: the Stage always went to the rightmost or rear-most point at the beginning and never seemed to come back. After a while of debugging, I realized&lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This should be a bug of Visions grid function with a very large grid: by default the grid reference cell is the the grid top-left corner FOV; when setting up this corner as a reference cell, if this cell is not included (enabled) during the scanning, the stage will assume that the grid starts from wherever the stage was at the start of the scan. The solution is to always include and scan the grid top-left corner FOV in the scanning grid as the first FOV, even when it is meaningless to scan the corner FOV.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;About the selection of the experimental disc, remember in the previous discussion with Ich on the same topic, I insisted using another older disc because it gave me better groove bottom measurements across wide disc surfaces areas (still loses data uner certain circumstances); however, after seeing the jaggy edge data, I realized that  currently we don't care about the depth as much, and  a newer disc may give us a better edge data for the lateral extraction. &lt;br/&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Therefore I selected one newly purchased system disc by Ich.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The new problem of the disc is that the surface is quite warped, so that across the long stereo (right channel only) sine signal (1.8 second ), the depth variation could be as large as 300 microns, which is pretty appalling if we would like to apply a global depth to the whole scanning, although the build-in depth adaptation function may help, but what it does is just linearly raise or lower the turret, which may be a cause of lens' crash. So to scan the whole area of data,  a global/systematic depth variation might be incomplete.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;It's necessary to divide the disc surface into smaller areas to minimize the internal warp of that area, which   may cause the overly large depth range.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The scanning has yet to start before we make sure that the signal and setup is ok.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-6216091773433227277?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/6216091773433227277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=6216091773433227277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6216091773433227277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/6216091773433227277'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/scanning-long-sine-wave-vos-grid.html' title='scanning long sine wave: vos grid calculation fixed'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8398924098487603872</id><published>2008-05-06T06:14:00.000-07:00</published><updated>2008-05-06T06:16:30.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Bibliography on Numerical Differentiation</title><content type='html'>&lt;style type="text/css"&gt;!--   @page { size: 21.59cm 27.94cm; margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt;  &lt;p style="margin-bottom: 0.5cm; font-style: normal;"&gt; &lt;span style="font-family:STHeiti;"&gt;Description&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:STHeiti;"&gt;Previously,  it was confirmed that raw groove edge of the scanned sine wave is  not as smooth as an ideal audio sine wave, after testing with  interpolation at various sampling rates; therefore, certain  smoothing should be performed somewhere in the workflow prior to the  audio output.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:STHeiti;"&gt;Whether to  perform smoothing before or after the differentiation is a question.  &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:STHeiti;"&gt;A few  literature on numerical differentiation (ND) are visited. &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;See detail.&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Detail&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;From what I read, common ND all use a  function to fit the data first, and then obtain the ND to that  function.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Smooth can be integrated with the UFO  thing.&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Bibliography&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Engeln-Müllges, G, and F. Uhlig. 1996.  &lt;/span&gt;&lt;span style="font-family:STHeiti;"&gt;&lt;i&gt;Numerical Algorithms with C&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:STHeiti;"&gt;.  Berlin: Springer-Verlag.&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Indicated that among three common ND   methods (interpolating polynomial, spline, Richardson   extrapolation), the differentiation of an interpolating polynomial   is least recommended. Note that Haber adopted polinomial   interpolation.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;The rating from the higher to the lower   methods in terms of accuracy is Richardson extrapolation, spline,   and polynomial.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Practical recipes of the first three   methos are given.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Numerical quadrature leads to better   result than ND does, due to roughening effect of differentiation.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Cheney, W., and D. Kincaid. 1999.  &lt;i&gt;Numerical Mathematics and Computing, 4&lt;/i&gt;&lt;sup&gt;&lt;i&gt;th&lt;/i&gt;&lt;/sup&gt;&lt;i&gt;  ed&lt;/i&gt;. Brooks/Cole: Pacific Grove.&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Talked about differentiation i the   context of interpolation. &lt;/span&gt;   &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Indicate that the data for   interpolation and differentiation usually contain noise.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Indiate that polynomial may overfit and   create large variance. Spline is preferred over polynomial.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Gautschi, W. 1997. &lt;i&gt;Numerical  Analysis: An Introduction&lt;/i&gt;. Birkhäuser: Boston.&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Starting from general formula of   differention of unequally spaced points, explained that  symmetical   difference quotient is one order more accurate than the one-sided   one is.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Explained that in practice, purturbed   data usually causes increasing error, especially as the &lt;i&gt;h&lt;/i&gt;   parameter gets smaller, i.e., fewer point differentiation. This is   called truncation error, i.e., the finite approximation throws out   the error term in the Taylor formulae.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Maron, M. 1987. &lt;i&gt;Numerical Analysis:A  Practical Approach, 2&lt;/i&gt;&lt;sup&gt;&lt;i&gt;nd&lt;/i&gt;&lt;/sup&gt;&lt;i&gt; ed&lt;/i&gt;. New York:  Macmillan.&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Discussed approximation error in terms   of truncation error (polynomial interpolation) and roundoff error,   inversely proportional to the step-size &lt;i&gt;h  &lt;/i&gt;in 1&lt;sup&gt;st&lt;/sup&gt;-order   derivatives&lt;sup&gt; &lt;/sup&gt;, i.e., large h leads to large truncation   error, but too small an h would cause roundoff error. &lt;/span&gt;   &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Discussed ND based on equispaced and   unevenly spaced samples. Polynomial and Robinson extrapolation are   efficient in the equispaced case; for unevenly cases, quadrature   like Gauss quadrature and adaptive auadrature is preferred.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Sharma, J. 2004. &lt;i&gt;Numerical Methods  for Engineers and Scientists&lt;/i&gt;. Pangbourne: Alpha Science  International.&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Pointed out that ND is essentially   fitting the data to a function and  then obtaining the approximate   analytical differentiation of that function.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Gave definition for quadrature.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Nakamura, S. 1991. &lt;i&gt;Applied Numerical  Methods with Software&lt;/i&gt;. Englewood Cliffs: Prentice-Hall.&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Talked about forward, backward, and   central difference approximation. Central ND is always more   accurate than the other two, in the sense of Newton interpolation.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Talked about 3 approaches to deriving   difference approximatios: Taylor expansion, difference operators,   and differentiation of interpolating polynomials; their advantage   and disadvantage are explained.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Rice J. 1993. Numerical Methods Software  and Analysis, 2&lt;sup&gt;nd&lt;/sup&gt; ed. Harcour Brace, and Jovanovich:  Acdemic Press&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;simultaneously smooth and estimate   derivative in Chi1. &lt;/span&gt;   &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-family:STHeiti;"&gt;Quadrature is lagacy term of   approximate interpotion.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8398924098487603872?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8398924098487603872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8398924098487603872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8398924098487603872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8398924098487603872'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/05/bibliography-on-numerical.html' title='Bibliography on Numerical Differentiation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-7633501118370752588</id><published>2008-04-24T19:55:00.001-07:00</published><updated>2008-04-24T19:55:05.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sample rate'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Raw edge resampled at various sampling rates</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The edge smoothing is dismissed because we would like to see how optical approach can have different information extracted as opposed to turntables, which skip information during stylus reading.&lt;/li&gt;    &lt;li&gt;Results are at: &lt;a title="http://kakyolab.xicp.net/0.report/25.interp_edge_raw/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/25.interp_edge_raw/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/25.interp_edge_raw/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;each column represents one resampled edge at an angular sampling rate derived from an audio sampling rate.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-7633501118370752588?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/7633501118370752588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=7633501118370752588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7633501118370752588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/7633501118370752588'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/04/raw-edge-resampled-at-various-sampling.html' title='Raw edge resampled at various sampling rates'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4897943349831409985</id><published>2008-04-23T14:53:00.001-07:00</published><updated>2008-04-23T14:53:13.433-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Differentiation updated</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Previously two errors in plotted analytical results of the differentiation of the sine-wave groove edge were found. Previous result: &lt;a title="http://kakyolab.xicp.net/0.report/23.interp_diff_edge/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/23.interp_diff_edge/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/23.interp_diff_edge/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;The horizontal distribution of the points are uneven&lt;/li&gt;      &lt;li&gt;Under 3-point differentiator (skip one point) The radius&amp;#160; variation (vertical axis) between close angular positions is too great, so that the graph looks nothing like a sine-wave but noise&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;These two problems have been solved. Result is at:&lt;a title="http://kakyolab.xicp.net/0.report/24.interp_diff_edge/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/24.interp_diff_edge/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/24.interp_diff_edge/0_screenshots_1.htm&lt;/a&gt;, the first row shows from the raw input edge to the differentiated result; the 2nd row shows the results of differentiation at various point-settings.&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;The source of error were not from the data but from my plotting program, it wrongly took the &amp;quot;arc&amp;quot; (radius times angle) as its X axis, so that the interval of the data became irregular. By replacing the X-axis with angles, the horizontal data spacing are showed to be even.&lt;/li&gt;      &lt;li&gt;By using higher number of points for the differentiator, the differentiated edge data appear smoother and smoother and much resemble a sine-wave shape.&lt;/li&gt;   &lt;/ol&gt; &lt;/ul&gt;  &lt;p&gt;Plan&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Do some reading on numerical differentiation and prepare a bibliography, to figure out how to design a proper differentiator to achieve the desired sound according to the reference data.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4897943349831409985?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4897943349831409985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4897943349831409985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4897943349831409985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4897943349831409985'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/04/differentiation-updated.html' title='Differentiation updated'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5669591315140657491</id><published>2008-04-22T11:53:00.001-07:00</published><updated>2008-04-22T11:53:32.644-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='sample rate'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Edge extraction and interpolation</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;We decided to use a specified audio rate to resample the original data, i.e, 96kHz from last meeting.&lt;/li&gt;    &lt;li&gt;The experiment was performed on an FOV's one CC's one edge that contains a sinewave (1kHz).&lt;/li&gt;    &lt;li&gt;The result is at: &lt;a title="http://kakyolab.xicp.net/0.report/23.interp_diff_edge/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/23.interp_diff_edge/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/23.interp_diff_edge/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;The procedure&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Low level groove edge detection by examining the neighbors (not the image processing routines, but by rules in our context).&lt;/li&gt;      &lt;li&gt;Smooth the data with a moving window.&lt;/li&gt;      &lt;li&gt;Interpolate the data at angular positions according to the specified audio sampling rate.&lt;/li&gt;      &lt;li&gt;Numerically differentiate the data, by skipping only one point.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;However, the result is noisy in display. With polynomial fitting, things would get much better.&lt;/li&gt;    &lt;li&gt;By skipping more points in differentiation, it may improve, but I haven't tested it yet.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5669591315140657491?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5669591315140657491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5669591315140657491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5669591315140657491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5669591315140657491'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/04/edge-extraction-and-interpolation.html' title='Edge extraction and interpolation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5093377799615287402</id><published>2008-04-12T09:35:00.001-07:00</published><updated>2008-04-12T09:35:35.948-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sample rate'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Bibliography: sampling and resampling</title><content type='html'>&lt;p&gt;Awcock, G, and R. Thomas. 1996. &lt;em&gt;Applied image processing&lt;/em&gt;. New York: McGraw-Hill.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Talked about pixel array tessellation, including orthogonal and hexagonal schemes and their pros and cons in image representation.&lt;/li&gt;    &lt;li&gt;Talked about non-uniform 2D sampling, e.g., log-scale&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; Ablameyko, S, and T. Pridmore. 2000. &lt;em&gt;Machine Interpretation of Line Drawing Images&lt;/em&gt;. London: Springer-Verlag.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Discussed raster-based and vector image representation.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Goshtasby, A. 2005. &lt;em&gt;2D and 3D Image Registration&lt;/em&gt;. Hoboken: John Wiley &amp;amp; Sons.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Discussed image resampling with a very organized summary.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Baxes, G. 1984. &lt;em&gt;Digital Image Processing: A Practical Primer&lt;/em&gt;. Englewood Cliffs: Prentice-hall.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Introduced resolution, factors that affect spatial resolution, and aliasing. Very plain and easy.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Jain, A. 1989. &lt;em&gt;Fundamentals of digital image processing&lt;/em&gt;. Englewood Cliffs: Prentice-hall.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Discussed 2D sampling therem in the sense of sampling random field to minimize the mean square error.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Pratt, W. 2001. &lt;em&gt;Digital Image Processing: PIKS Inside, 3rd ed&lt;/em&gt;. Hoboken: John Wiley &amp;amp; Sons.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Discussed sampling image as deterministic field and random field.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Jahne, B. 1997. &lt;em&gt;Digital Image Processing: Concepts, Algorithms, and Scientific Applications, 4th ed&lt;/em&gt;. Berlin: Springer-Verlag.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Thoroughly covered 2D and 3D image processing from perspectives of representation, formation, processing, feature, and analysis.&lt;/li&gt;    &lt;li&gt;Talked about sampling and interpolation, including interpolation in frequency domain.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Gonzales, R. 2002. &lt;em&gt;Digital image processing, 2nd ed.&lt;/em&gt; Upper Saddle River: Prentice-hall.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Classical textbook, but only included minor info on sampling, and no disccusion on resampling and interpolation.&lt;/li&gt;    &lt;li&gt;Talked about pixel adjacency and distance measure.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5093377799615287402?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5093377799615287402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5093377799615287402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5093377799615287402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5093377799615287402'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/04/bibliography-sampling-and-resampling.html' title='Bibliography: sampling and resampling'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-792521541776371016</id><published>2008-03-31T14:05:00.001-07:00</published><updated>2008-03-31T14:05:29.612-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='audio extraction'/><category scheme='http://www.blogger.com/atom/ns#' term='sample rate'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Adaptive maximum angular sampling rate</title><content type='html'>&lt;p&gt;Description&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The raw groove edge points contain a lot of local disturbance captured with the high scanning resolution, which is not necessarily useful to the audio output. They need to be properly smoothed and then evenly sampled without perceptable distortion to the audio content.&lt;/li&gt; &lt;li&gt;For each FOV, the angular velocity (related to RPM) is constant, thereofore the linear velocity, i.e., the spatial distance that the stylus covers within a unit duration, is determined by the integration of the radii of the points along the stylus movement over the angle span of the unit duration. &lt;/li&gt; &lt;li&gt;Because raw edge points are not necessarily angularly spaced at a regular interval, they need to be interpolated so that&amp;nbsp; Then the number of edge points that we skip during the angular sampling is determined by the angle span of the CC bounded by the FOV, and the number of points we want to preserve. &lt;/li&gt; &lt;li&gt;The angular sampling rate (&lt;strong&gt;ASR&lt;/strong&gt;, a.k.a, angle per sample) is determined as follows:&lt;/li&gt; &lt;ol&gt; &lt;li&gt;Let the angle span of the CC #i in the FOV be &lt;strong&gt;angle_span(i)&lt;/strong&gt;; Let the number of points that we use in the sampled data be &lt;strong&gt;n_point&lt;/strong&gt;;&lt;/li&gt; &lt;li&gt;ASR(i) = angle_span(i) / n_point.&lt;/li&gt; &lt;li&gt;Angle span of the CC is derived from calculating the angles of the boundary points of the CC edge: if we denote the angle of the entry point as &lt;strong&gt;A(a)&lt;/strong&gt;, and the exit point &lt;strong&gt;A(b)&lt;/strong&gt;, then angle_span = A(b) - A(a).&lt;/li&gt; &lt;ol&gt; &lt;li&gt;The angles are calculated from polar coordinates relative to the disc center.&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;As of now, n_point = the number of the raw edge points.&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;With the ASR obtained, the edge data from the previous smoothing step is interpolated at the evenly spaced sample positions. See Column #3 (interpolation):&lt;a title="http://kakyolab.xicp.net/0.report/22.interp_diff_edge/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/22.interp_diff_edge/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/22.interp_diff_edge/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-792521541776371016?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/792521541776371016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=792521541776371016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/792521541776371016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/792521541776371016'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/03/adaptive-maximum-angular-sampling-rate.html' title='Adaptive maximum angular sampling rate'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1655659065392303113</id><published>2008-03-26T13:32:00.001-07:00</published><updated>2008-03-26T13:38:41.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Interpolation, sampling, and differentiation</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;On top of the smoothing, new interpolation and sampling that ensure highest possible sampling resolution are implemented, see &lt;strong&gt;Detail #2.&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Polynomial fitting after interpolation is removed, a numerical differentiation with every other point is used, &lt;strong&gt;however, it generates chaotic results, indicating that with highest resolution, the local disturbance is quite large, although the dynamic range is narrow (less than 2 pixels)&lt;/strong&gt;. At this point, no artificial sampling rate is going to be used.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Detail&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The result: &lt;a title="http://kakyolab.xicp.net/0.report/22.interp_diff_edge/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/22.interp_diff_edge/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/22.interp_diff_edge/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;The sampling rate is now determined by the original pixel resolution so that the evenly spaced sample points after interpolation are no fewer than the original edge points.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1655659065392303113?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1655659065392303113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1655659065392303113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1655659065392303113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1655659065392303113'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/03/interpolation-sampling-and.html' title='Interpolation, sampling, and differentiation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-2628914013607652436</id><published>2008-03-25T02:55:00.001-07:00</published><updated>2008-03-25T02:55:58.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='audio extraction'/><category scheme='http://www.blogger.com/atom/ns#' term='Modulation Threshold'/><category scheme='http://www.blogger.com/atom/ns#' term='groove traching'/><category scheme='http://www.blogger.com/atom/ns#' term='groove geometry'/><title type='text'>Interpolation, Polynomial fitting, differentiation</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A bug in the previous coordinate derivation (at the parser level) was found and corrected. This bug, however, didn't prove to be the source of the previous error. &lt;strong&gt;See Detail #1. &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Based on the previous smoothing result, linear interpolation was used based on a specified audio sampling rate, to obtain edge contour at the even sampling positions. &lt;strong&gt;See Detail #2.&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Analytical polynomial fitting and differentiation were used. &lt;strong&gt;Differentiation result shows pretty nice sinewave.&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;It seems that the previous jaggy results were from the combination of visual illusion of the aspect-ratio distortion and the lack of smoothing and interpolation.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Detail&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In OPD files, the FOV stage position is saved in mm. In the previous OPD file parser, when the stage position, i.e., the FOV position in the world coordinate, was extracted and converted into pixel, the floating point portion was truncated, which may have caused coordinate errors. After the correction, now it is preserved. According to test, this correction did not improve the visually jaggy edge contour.&lt;/li&gt;    &lt;li&gt;The raw, smoothed, interpolated, poly-fitted, and the differentiated outer edge (sine wave) of the groove CC is shown here, by rows: &lt;a title="http://kakyolab.xicp.net/0.report/21.interp_polyfit_diff_edge/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/21.interp_polyfit_diff_edge/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/21.interp_polyfit_diff_edge/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Row 1: Not correctly scaled full-views of the outer edge data&lt;/li&gt;      &lt;ol&gt;       &lt;li&gt;Col 1: Raw edge&lt;/li&gt;        &lt;li&gt;Col 2: Smoothed edge (time-window=1/50 angle range)&lt;/li&gt;        &lt;li&gt;Col 3: Linearly interpolated edge&lt;/li&gt;        &lt;li&gt;Col 4: Polynomially-fitted edge, window-size = 40 points, order = 2&lt;/li&gt;        &lt;li&gt;Col 5: Analytically differentiated edge.&lt;/li&gt;     &lt;/ol&gt;      &lt;li&gt;Row 2: the scaled version of Row 1 to correct the aspect-ratio of the data plots.&lt;/li&gt;      &lt;li&gt;Row 3~6: The &amp;quot;zoomed-in&amp;quot; subplots (snapshots) of the segments of the edge data.&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;Plan&lt;/p&gt;  &lt;p&gt;Proceed to audio extraction from the differentiated sine waves.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-2628914013607652436?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/2628914013607652436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=2628914013607652436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2628914013607652436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/2628914013607652436'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/03/interpolation-polynomial-fitting.html' title='Interpolation, Polynomial fitting, differentiation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-8177780197589873209</id><published>2008-03-22T12:57:00.001-07:00</published><updated>2008-03-22T12:57:10.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Smooth edge</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The raw edge points of the sine-wave grooves contained a lot of sudden jumps and the attempts to find logical errors in my edge extraction and polar-system code didn't lead to any firm conclusion.&lt;/li&gt;    &lt;li&gt;We decided to smooth the edge radii (distances between the edge points and the disc center) to see what would happen.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Two ways of window-based smoothing were used:&lt;/strong&gt; &lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Fixed window size: Use a window with the size of a specified number of neighboring points, regardless the angular distance between the points. See Detail #1&lt;/li&gt;      &lt;li&gt;Variable window size: Use a window with the size based on a specified angular span that would result in different number of window points depending on the particular angle values of these points.&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;#2 generates visually smoother points&lt;/strong&gt;, probably because it is more grounded approach, because the angle-span based smoothing is closely related to time, while point-number based windowing is more random.&lt;/li&gt;      &lt;li&gt;I haven't try weighted windowing such as Gaussian window. These will be attempted only after confirming that the above two methods don't work too well in terms of the generated audio.&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Matlab plot scaling problem (only a few printable paper types are avaiable) causes the figures are ill-scaled; as a remedy, I show the scaled full-view of the data, and break down the full-length data into multiple aspect-ratio-adjusted subplots in the image reports.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Detail&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;See report page: &lt;a title="http://kakyolab.xicp.net/0.report/19.smooth_edge_fixed_window/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/19.smooth_edge_fixed_window/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/19.smooth_edge_fixed_window/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;The data was arranged by rows&lt;/li&gt;      &lt;ol&gt;       &lt;li&gt;Row 1: scaled the full views of the sinewave groove's outer edge, scaled with image scaling of the ouput Matlab figure&lt;/li&gt;        &lt;ol&gt;         &lt;li&gt;Col 1: raw edges&lt;/li&gt;          &lt;li&gt;Col 2: smoothed with window-size 3 (points)&lt;/li&gt;          &lt;li&gt;Col 3: smoothed with window-size 5 (points)&lt;/li&gt;          &lt;li&gt;Col 4: smoothed with window-size 7 (points)&lt;/li&gt;          &lt;li&gt;Col 5: smoothed with window-size 9 (points)&lt;/li&gt;          &lt;li&gt;Col 6: smoothed with window-size 11 (points)&lt;/li&gt;       &lt;/ol&gt;        &lt;li&gt;Row 2: subplots of the smoothed edge with window-size 3 (points)&lt;/li&gt;        &lt;li&gt;Row 3: subplots of the smoothed edge with window-size 5 (points)&lt;/li&gt;        &lt;li&gt;Row 4: subplots of the smoothed edge with window-size 7 (points)&lt;/li&gt;        &lt;li&gt;Row 5: subplots of the smoothed edge with window-size 9 (points)&lt;/li&gt;        &lt;li&gt;Row 6: subplots of the smoothed edge with window-size 11 (points)&lt;/li&gt;     &lt;/ol&gt;   &lt;/ul&gt;    &lt;li&gt;See report page: &lt;a title="http://kakyolab.xicp.net/0.report/20.smooth_edge_var_window/0_screenshots_1.htm" href="http://kakyolab.xicp.net/0.report/20.smooth_edge_var_window/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/0.report/20.smooth_edge_var_window/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;The data was arranged by rows&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Row 1: scaled the full views of the sinewave groove's outer edge, scaled with image scaling of the ouput Matlab figure&lt;/li&gt;        &lt;ol&gt;         &lt;li&gt;Col 1: raw edges&lt;/li&gt;          &lt;li&gt;Col 2: smoothed with window-size of 0.005 of the CC's total angle span&lt;/li&gt;          &lt;li&gt;Col 3: smoothed with window-size of 0.01 of the CC's total angle span&lt;/li&gt;          &lt;li&gt;Col 4: smoothed with window-size of 0.0125 of the CC's total angle span&lt;/li&gt;          &lt;li&gt;Col 5: smoothed with window-size of 0.02 of the CC's total angle span&lt;/li&gt;       &lt;/ol&gt;        &lt;li&gt;Row 2: subplots of the smoothed edge with window-size of 0.005 of the CC's total angle span&lt;/li&gt;        &lt;li&gt;Row 3: subplots of the smoothed edge with window-size of 0.01 of the CC's total angle span&lt;/li&gt;        &lt;li&gt;Row 4: subplots of the smoothed edge with window-size of 0.0125 of the CC's total angle span&lt;/li&gt;        &lt;li&gt;Row 5: subplots of the smoothed edge with window-size of 0.02 of the CC's total angle span&lt;/li&gt;     &lt;/ul&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;Plan&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If this looks ok, proceed to polynomial fitting and sampling.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-8177780197589873209?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/8177780197589873209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=8177780197589873209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8177780197589873209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/8177780197589873209'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/03/smooth-edge.html' title='Smooth edge'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4624019673709293846</id><published>2008-03-12T23:13:00.001-07:00</published><updated>2008-03-12T23:13:37.421-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='polar coordinates'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Edge and polar coordinates</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;After a whole-day debug, I still couldn't find the culprit of the jaggy edge radii to the disc center.&lt;/li&gt;    &lt;li&gt;I printed out the edge points and manually calculated the radii, according to the center I measured, and the stage position of the FOV that's in the OPD file.&lt;/li&gt;    &lt;li&gt;Now I'm totally confused.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Detail&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A few possible sources of error were examined:&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;&lt;strong&gt;inaccurately estimated disc center&lt;/strong&gt;, an error like this does not explain why the radii did not present more monotonous variation, i.e., if the center were off to a certain direction, the radii would still show local continuity and only present an offset on a larger scale. &lt;strong&gt;On the contrary, the result shows lots of local periodic variations.&lt;/strong&gt;&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;wrongly angularly-ordered edge points&lt;/strong&gt;, the idea is that if the edge points were not properly ordered before being plotted, then some previous shorter radii would be mis-placed to a later position, resulting the jumpy radii contour; &lt;strong&gt;however, according to my careful point-by-point tracing the points, this error does not exist.&lt;/strong&gt;&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;incorrect polar coordinates calculation&lt;/strong&gt;, the calculation was like this: the world-coordinates of the vertices of the FOV was derived when reading the OPD data file; these vertices were then centered to the disc center; finally, when doing the cartesian-to-polar conversion, the polar coordinates relative to the disc center of any points inside the FOV are derived through the top-left vertex of the FOV. &lt;strong&gt;According to my manual calculation, this step was correct as well.&lt;/strong&gt;&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;precision degradation by metrc-to-pixel conversion&lt;/strong&gt;, the stage position at an FOV, which is saved in the OPD file of an FOV determines all the coordinates of the FOV; the stage position is saved in metric unit (mm), and it has to be converted to the pixel unit to perform later calculation. This introduces precision loss. &lt;strong&gt;But after I did a one-pixel compensation, the jaggy edge is still there.&lt;/strong&gt;&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;display problem, &lt;/strong&gt;the matlab plot may have exaggerated the jaggy situation; however, the sudden jump is as large as 10-times the previous difference of the continuous group of radii, although the amount of jump is only of around 1-pixel distance.&lt;/li&gt;   &lt;/ol&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4624019673709293846?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4624019673709293846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4624019673709293846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4624019673709293846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4624019673709293846'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/03/edge-and-polar-coordinates.html' title='Edge and polar coordinates'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-5904494438553055560</id><published>2008-03-11T10:09:00.001-07:00</published><updated>2008-03-11T10:09:36.671-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Groove edge extraction: the old and the new way</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Two ways of extracting the groove edges were implemented. But they currently both result in irregular point-to-point transitions.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Method #1: based on polar coordinates&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Basis: The outer and inner edges can be defined as the radially farthest and nearest points of the groove CC.&lt;/li&gt;    &lt;li&gt;Procedure: for a CC&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Relative to the disc center, convert the cartesian matrix coordinates to polar ones. This gives a whole set of polar coords, depicted as &lt;em&gt;P&lt;/em&gt;&lt;/li&gt;      &lt;li&gt;From a desired audio sampling-rate (e.g., 384kHz), calculate the quantized image angular sampling-rate, i.e., how much angle, in rad, spans a sample along the angular direction. This generates a constant quantization step&lt;em&gt;:angle_per_sample.&lt;/em&gt;&lt;/li&gt;      &lt;li&gt;Sort all points in &lt;em&gt;P&lt;/em&gt; by angle. &lt;/li&gt;      &lt;li&gt;Divide the sorted points into angular groups &lt;em&gt;A &lt;/em&gt;using &lt;em&gt;angle_per_sample &lt;/em&gt;from Step #2.&lt;/li&gt;      &lt;li&gt;For each angular group &lt;em&gt;A&lt;/em&gt;(i), take the point with the longest radius as the outer edge point at the angle A(i), and the shortest radius as the inner edge point at the angle A(i). &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Pitfalls&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;If the sampling-rate isn't high enough, the grouping method will take in too thick portion along the groove CC; when taking the extreme points, it can take only one for each end, in which way we lose points.&lt;/li&gt;   &lt;/ol&gt; &lt;/ul&gt;  &lt;p&gt;Method #2: based on cartesian matrix coordinates&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Basis: &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;by looking at the neighboring pixels of an edge point of the groove CC, we should easily see 1 or more pixels of different CC index; whenever heterogeneous neighbors are found, the point of interest can be taken as an edge point. &lt;/li&gt;      &lt;li&gt;Occasionally some &amp;quot;holes&amp;quot; inside the groove can be seen as edge by the strategy above, but they can be filtered out separately.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt; Procedure&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;For each point in a CC, mark those whose 4-neighbor area includes pixels with value other than the CC as edge. Note that 8-neighbor tends to collect overlapped points.&lt;/li&gt;      &lt;li&gt;Separate the inner and outer edge points groups by using a 2-bin histogram that analyzes the radii of their polar coordinates.&lt;/li&gt;      &lt;li&gt;For each edge group, sort the points by angle. Note that at this point, there is no quantization for this approach.&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;This approach needs a following fitting or interpolation to quantize it.&lt;/li&gt;    &lt;li&gt;Somehow in the generated graph, the same irregularity still shows itself. I'm not sure whether it was just a display problem, because the data showed the gaps between adjacent points are only 1~2 pixels wide.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-5904494438553055560?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/5904494438553055560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=5904494438553055560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5904494438553055560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/5904494438553055560'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/03/groove-edge-extraction-old-and-new-way.html' title='Groove edge extraction: the old and the new way'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4813640953625956643</id><published>2008-03-04T11:36:00.001-08:00</published><updated>2008-03-04T11:36:01.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='fitting'/><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='sample rate'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Angular sampling, fitting</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I realized that the previous edge point sampling method was not entirely based on explicit audio sampling, so I updated the sampling method; now the method takes a control parameter of audio sampling rate and converts it into proper image sampling rage; &lt;strong&gt;However, there are other potential data loss issues. See Detail 1.2.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Before the sampling method changed, to avoid using sampling, I tried to extract all edge points of a groove use edge detection methods, trying to bypass the complexity and possible data loss with sampling; it turned out that the conventional edge detection methods all have difficulty in catching all edge points, regardless what analytical resolutions (thresholds and so on) they are working at. &lt;strong&gt;See Detail 1.1&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;With the stereo sinewave, the undulation extraction, polynomial fitting,&amp;#160; and differentiation were performed incrementally with individual results shown in &lt;strong&gt;Detail 2, 3, 4&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Improved the groove contour graph; now the value ranges of both top edges are normalized to the same range of the whole set of the top edge data, i.e., there won't be data that looks jaggy while its variation is actually tiny in value. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Detail&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;There are two ways of taking the groove edge points: &lt;strong&gt;1)&lt;/strong&gt; in cartesian coordinate system, look at the groove as a 2D glyph and extract the edge using edge detection, and then sample them angularly according to the disc-center polar coordinate system; &lt;strong&gt;2)&lt;/strong&gt; using the polar coordinate system in the first place, at an angular sampling rate, incrementally extract the radius extreme points at each angular sample points, and serialize them.       &lt;ol&gt;       &lt;li&gt;Edge detection tends to generates errors, see images , the red points are the detected edges, the light blue area is the rest of the groove, navy is the background.          &lt;ol&gt;           &lt;li&gt;&lt;a title="http://kakyolab.xicp.net/work/14.edge_detection/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/14.edge_detection/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/14.edge_detection/0_screenshots_1.htm&lt;/a&gt; &lt;/li&gt;         &lt;/ol&gt;       &lt;/li&gt;        &lt;li&gt;angular sampling catches more points, but when taking the extreme points of the angular group, there will be edge points that will get discarded. When sampling angularly, a parameter controlling the thickness of the group should be carefully determined, otherwise, more points across the groove will be lost, no systematic solution to it yet. The audio sampling rate used here is 384kHz.          &lt;ol&gt;           &lt;li&gt;&lt;a title="http://kakyolab.xicp.net/work/15.angular_sampling/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/15.angular_sampling/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/15.angular_sampling/0_screenshots_1.htm&lt;/a&gt; &lt;/li&gt;         &lt;/ol&gt;       &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;The undulations extracted are here:      &lt;ol&gt;       &lt;li&gt;&lt;a title="http://kakyolab.xicp.net/work/16.undulation/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/16.undulation/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/16.undulation/0_screenshots_1.htm&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;Column 1: lateral radii of the inner, outer edges, all points of the bottom; &lt;/li&gt;        &lt;li&gt;Column 2: vertical depths of the top edges, and the ones for between the mid-points of the bottom and the mean depth of both top edges. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;The polynomial fitted data, using previous found optimal parameters (windows size 40, order 2), the sinewave is clearly seen in the fitting.      &lt;ol&gt;       &lt;li&gt;&lt;a title="http://kakyolab.xicp.net/work/17.polyfit/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/17.polyfit/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/17.polyfit/0_screenshots_1.htm&lt;/a&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;The differentiation looks jaggy. We need real numerical differentiation to replace the current polyfit-coefficient-based method .      &lt;ol&gt;       &lt;li&gt;&lt;a title="http://kakyolab.xicp.net/work/18.diff/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/18.diff/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/18.diff/0_screenshots_1.htm&lt;/a&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Plan&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Numerical differentiation to achieve better sine wave like output. &lt;/li&gt;    &lt;li&gt;improving the image report code to add more automatic image captions. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4813640953625956643?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4813640953625956643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4813640953625956643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4813640953625956643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4813640953625956643'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/03/angular-sampling-fitting.html' title='Angular sampling, fitting'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-4232559631756374899</id><published>2008-02-13T08:20:00.001-08:00</published><updated>2008-02-13T08:20:15.793-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weekly Meeting'/><title type='text'>Ich meeting notes 2008-1~2008-2-12</title><content type='html'>&lt;p&gt;MItAC&lt;/p&gt; &lt;ol&gt; &lt;li&gt;bottom selection: literature 2D smoothing, interpolation; stylus modeling&lt;/li&gt; &lt;li&gt;sampling rate: &lt;/li&gt; &lt;ol&gt; &lt;li&gt;angular sampling rate should decrease from outer groove revolutions to inner ones; &lt;/li&gt; &lt;li&gt;the sampling rate calculation should be adaptive to any portion of groove on any revolution; &lt;/li&gt; &lt;li&gt;the radius changes on each angular increment, so does the sampling rate.&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;differentiation: numeric method using skip-point average (reading needed); for now, use the simplest one.&lt;/li&gt; &lt;li&gt;groove width: use it as an additional verification of the groove data&lt;/li&gt; &lt;li&gt;Don't use averaging to represent the undulation before it is justified.&lt;/li&gt; &lt;li&gt;Make sure that no data be discarded due to unjustiable sampling.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;General Research&lt;/p&gt; &lt;ol&gt; &lt;li&gt;show every step, don't skip anything before it's justified: e.g., polyfit before differentiation&lt;/li&gt; &lt;li&gt;remove anything users don't want: the unwanted graph for bottom groove.&lt;/li&gt;&lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-4232559631756374899?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/4232559631756374899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=4232559631756374899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4232559631756374899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/4232559631756374899'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/02/ich-meeting-notes-2008-12008-2-12.html' title='Ich meeting notes 2008-1~2008-2-12'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10359330.post-1709558839000484771</id><published>2008-02-12T10:24:00.001-08:00</published><updated>2008-02-12T10:24:25.832-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='differentiation'/><category scheme='http://www.blogger.com/atom/ns#' term='groove tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='audio extraction'/><category scheme='http://www.blogger.com/atom/ns#' term='undulation'/><category scheme='http://www.blogger.com/atom/ns#' term='MItAC'/><title type='text'>Differentiation</title><content type='html'>&lt;p&gt;Description&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Haber's polynomial fitting and differentiation was implemented with several parameter sets tested; the results agreed with his paper that certain order of polynomial fit with a proper size of window generates better (smoother) results than others, see results:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Window size: 15, Order: 2&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Lateral:&lt;a title="http://kakyolab.xicp.net/work/6.diff_lateral_w15_o2/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/6.diff_lateral_w15_o2/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/6.diff_lateral_w15_o2/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Vertical:&lt;a title="http://kakyolab.xicp.net/work/7.diff_vertical_w15_o2/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/7.diff_vertical_w15_o2/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/7.diff_vertical_w15_o2/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;&lt;strong&gt;Window size: 40, Order: 2&lt;/strong&gt;&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;Lateral:&lt;a title="http://kakyolab.xicp.net/work/8.diff_lateral_w40_o2/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/8.diff_lateral_w40_o2/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/8.diff_lateral_w40_o2/0_screenshots_1.htm&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Vertical:&lt;a title="http://kakyolab.xicp.net/work/9.diff_vertical_w40_o2/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/9.diff_vertical_w40_o2/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/9.diff_vertical_w40_o2/0_screenshots_1.htm&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Window size: 15, Order: 4 (Haber's setting)&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Lateral:&lt;a title="http://kakyolab.xicp.net/work/10.diff_lateral_w15_o4/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/10.diff_lateral_w15_o4/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/10.diff_lateral_w15_o4/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Vertical:&lt;a title="http://kakyolab.xicp.net/work/11.diff_vertical_w15_o4/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/11.diff_vertical_w15_o4/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/11.diff_vertical_w15_o4/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Window size: 40, Order: 4&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Lateral:&lt;a title="http://kakyolab.xicp.net/work/12.diff_lateral_w40_o4/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/12.diff_lateral_w40_o4/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/12.diff_lateral_w40_o4/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Vertical:&lt;a title="http://kakyolab.xicp.net/work/13.diff_vertical_w40_o4/0_screenshots_1.htm" href="http://kakyolab.xicp.net/work/13.diff_vertical_w40_o4/0_screenshots_1.htm"&gt;http://kakyolab.xicp.net/work/13.diff_vertical_w40_o4/0_screenshots_1.htm&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;See Detail #1&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;I attempted to test Stotzer's digital linear differentiator approach; however, probably due to the lack of knowledge of differentiator design, I couldn't achieve a linear one, instead, I got a frequency response of logarithmic shape with filter band of 3 segments.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Detail&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The fitting method&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Regarding [radius, angle] pair, assume that radius is the function of angle, and fit an n-th order polynomial to this polar coordinate pair.&lt;/li&gt;      &lt;li&gt;Differentiate the fitted coefficients, using the result as the coefficient to evaluate the angles as input with polynomial fit, which generates the output value in the graphs&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;Plan&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Go on trying the Haber's method on Sine wave&lt;/li&gt;    &lt;li&gt;Read about digital differentiator literature and implement Stotzer's approach&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10359330-1709558839000484771?l=damonli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonli.blogspot.com/feeds/1709558839000484771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10359330&amp;postID=1709558839000484771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1709558839000484771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10359330/posts/default/1709558839000484771'/><link rel='alternate' type='text/html' href='http://damonli.blogspot.com/2008/02/differentiation.html' title='Differentiation'/><author><name>Beinan Li</name><uri>http://www.blogger.com/profile/09315790052794873986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_JDks8GZN8kI/R6eJ7qCIdhI/AAAAAAAAADA/LJbrusq8Csc/S220/P1010045.jpg'/></author><thr:total>0</thr:total></entry></feed>
