{"action":"created","issue":{"url":"https://api.github.com/repos/akmaier/CONRAD/issues/5","labels_url":"https://api.github.com/repos/akmaier/CONRAD/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/akmaier/CONRAD/issues/5/comments","events_url":"https://api.github.com/repos/akmaier/CONRAD/issues/5/events","html_url":"https://github.com/akmaier/CONRAD/pull/5","id":58477576,"number":5,"title":"Ray-by-ray filtering + Examples","user":{"login":"salah-saleh","id":1296191,"avatar_url":"https://avatars.githubusercontent.com/u/1296191?v=3","gravatar_id":"","url":"https://api.github.com/users/salah-saleh","html_url":"https://github.com/salah-saleh","followers_url":"https://api.github.com/users/salah-saleh/followers","following_url":"https://api.github.com/users/salah-saleh/following{/other_user}","gists_url":"https://api.github.com/users/salah-saleh/gists{/gist_id}","starred_url":"https://api.github.com/users/salah-saleh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/salah-saleh/subscriptions","organizations_url":"https://api.github.com/users/salah-saleh/orgs","repos_url":"https://api.github.com/users/salah-saleh/repos","events_url":"https://api.github.com/users/salah-saleh/events{/privacy}","received_events_url":"https://api.github.com/users/salah-saleh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-02-21T22:19:00Z","updated_at":"2015-02-23T10:06:59Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/akmaier/CONRAD/pulls/5","html_url":"https://github.com/akmaier/CONRAD/pull/5","diff_url":"https://github.com/akmaier/CONRAD/pull/5.diff","patch_url":"https://github.com/akmaier/CONRAD/pull/5.patch"},"body":"The Ray-by-ay filtered back projection is an algorithm that aim at reducing the noise effect in the cases of noisy FBP data. Traditionally, only a highpass filter is used e.g. ramp filter. Hence, the noise remains unaffected in the reconstructed images. The Ray-by-ray algorithm suggests modeling the projection noise on a ray-by-ray basis. The idea is to construct a set of lowpass filters of different strengths and to combine them with the traditional highpass filter. Depending on the noise variance of the ray measured, a weight is assigned. In 'CONRAD/src/edu/stanford/rsl/conrad/filtering/RayByRayFiltering.java', we implemented the algorithm based on Zeng's paper 'A filtered backprojection algorithm with ray-by-ray noise weighting'. In his paper, Zeng suggested implementing 11 frequency domain filter. Based on the noise variance of the ray, only one of those filters is applied to the ray before its final reconstruction. The 11 filters are a combination of different lowpass filters and the traditional ramp filter. There are many parameters that can affect the lowpass filters' strengths, and as stated by the author, the interaction between them is not entirely clear. However, one of the author suggestions is to set the parameter 'K' to 0 and and the parameter 'beta' to a very low number (in the order of E-4). Increasing 'beta' will then increase the effect of the smoothing and visa versa. For more demonstration and testing on the effect of those parameters, the reader is encourage to check the examples implemented in the following files:    \r\nCONRAD/src/edu/stanford/rsl/tutorial/fan/RbRFanBeamReconstructionExample.java\r\nCONRAD/src/edu/stanford/rsl/tutorial/RayByRayFilterExample.java\r\nThe following image demonstrate the difference between the traditional ramp filter and the Ray-by-ray filter\r\n![screen shot 2015-02-23 at 08 58 33](https://cloud.githubusercontent.com/assets/1296191/6324773/f2c240ca-bb3e-11e4-9386-a74f81b94dfb.png)\r\n![screen shot 2015-02-23 at 09 00 05](https://cloud.githubusercontent.com/assets/1296191/6324772/f2c058be-bb3e-11e4-8eb2-8e56330a18ba.png)\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/akmaier/CONRAD/issues/comments/75516459","html_url":"https://github.com/akmaier/CONRAD/pull/5#issuecomment-75516459","issue_url":"https://api.github.com/repos/akmaier/CONRAD/issues/5","id":75516459,"user":{"login":"salah-saleh","id":1296191,"avatar_url":"https://avatars.githubusercontent.com/u/1296191?v=3","gravatar_id":"","url":"https://api.github.com/users/salah-saleh","html_url":"https://github.com/salah-saleh","followers_url":"https://api.github.com/users/salah-saleh/followers","following_url":"https://api.github.com/users/salah-saleh/following{/other_user}","gists_url":"https://api.github.com/users/salah-saleh/gists{/gist_id}","starred_url":"https://api.github.com/users/salah-saleh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/salah-saleh/subscriptions","organizations_url":"https://api.github.com/users/salah-saleh/orgs","repos_url":"https://api.github.com/users/salah-saleh/repos","events_url":"https://api.github.com/users/salah-saleh/events{/privacy}","received_events_url":"https://api.github.com/users/salah-saleh/received_events","type":"User","site_admin":false},"created_at":"2015-02-23T10:06:59Z","updated_at":"2015-02-23T10:06:59Z","body":"It was a mistake to push this file. I had my ellipsoid implementation in the tutorial/phantoms/Ellipsoid.java file. I removed the phantom/EllipsoidPhantom.java file from my pull request."}}