{"action":"created","issue":{"url":"https://api.github.com/repos/imagej/imagej-ops/issues/387","repository_url":"https://api.github.com/repos/imagej/imagej-ops","labels_url":"https://api.github.com/repos/imagej/imagej-ops/issues/387/labels{/name}","comments_url":"https://api.github.com/repos/imagej/imagej-ops/issues/387/comments","events_url":"https://api.github.com/repos/imagej/imagej-ops/issues/387/events","html_url":"https://github.com/imagej/imagej-ops/pull/387","id":147042733,"number":387,"title":"Integral image-backed local thresholding ops","user":{"login":"stelfrich","id":333358,"avatar_url":"https://avatars.githubusercontent.com/u/333358?v=3","gravatar_id":"","url":"https://api.github.com/users/stelfrich","html_url":"https://github.com/stelfrich","followers_url":"https://api.github.com/users/stelfrich/followers","following_url":"https://api.github.com/users/stelfrich/following{/other_user}","gists_url":"https://api.github.com/users/stelfrich/gists{/gist_id}","starred_url":"https://api.github.com/users/stelfrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stelfrich/subscriptions","organizations_url":"https://api.github.com/users/stelfrich/orgs","repos_url":"https://api.github.com/users/stelfrich/repos","events_url":"https://api.github.com/users/stelfrich/events{/privacy}","received_events_url":"https://api.github.com/users/stelfrich/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/imagej/imagej-ops/labels/needs-review","name":"needs-review","color":"f9d0c4"}],"state":"open","locked":false,"assignee":{"login":"dietzc","id":1267990,"avatar_url":"https://avatars.githubusercontent.com/u/1267990?v=3","gravatar_id":"","url":"https://api.github.com/users/dietzc","html_url":"https://github.com/dietzc","followers_url":"https://api.github.com/users/dietzc/followers","following_url":"https://api.github.com/users/dietzc/following{/other_user}","gists_url":"https://api.github.com/users/dietzc/gists{/gist_id}","starred_url":"https://api.github.com/users/dietzc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dietzc/subscriptions","organizations_url":"https://api.github.com/users/dietzc/orgs","repos_url":"https://api.github.com/users/dietzc/repos","events_url":"https://api.github.com/users/dietzc/events{/privacy}","received_events_url":"https://api.github.com/users/dietzc/received_events","type":"User","site_admin":false},"milestone":null,"comments":6,"created_at":"2016-04-08T21:22:27Z","updated_at":"2016-05-30T07:50:10Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/imagej/imagej-ops/pulls/387","html_url":"https://github.com/imagej/imagej-ops/pull/387","diff_url":"https://github.com/imagej/imagej-ops/pull/387.diff","patch_url":"https://github.com/imagej/imagej-ops/pull/387.patch"},"body":"- Add `IntegralMean` and `IntegralVariance` that compute mean and variance for `RectangleNeighborhood`, respectively\r\n- Fix an issue with `DefaultIntegralImg`/`SquaredIntegralImg` and the handling of boundary conditions\r\n- Add versions of local thresholding ops that only require mean and standard deviation ops:\r\n  - `LocalMean`\r\n  - `LocalNiblack`\r\n  - `LocalPhansalkar`\r\n  - `LocalSauvola`\r\n- Integral image-backed ops are not available via `ThresholdNamespace` for now"},"comment":{"url":"https://api.github.com/repos/imagej/imagej-ops/issues/comments/222433417","html_url":"https://github.com/imagej/imagej-ops/pull/387#issuecomment-222433417","issue_url":"https://api.github.com/repos/imagej/imagej-ops/issues/387","id":222433417,"user":{"login":"stelfrich","id":333358,"avatar_url":"https://avatars.githubusercontent.com/u/333358?v=3","gravatar_id":"","url":"https://api.github.com/users/stelfrich","html_url":"https://github.com/stelfrich","followers_url":"https://api.github.com/users/stelfrich/followers","following_url":"https://api.github.com/users/stelfrich/following{/other_user}","gists_url":"https://api.github.com/users/stelfrich/gists{/gist_id}","starred_url":"https://api.github.com/users/stelfrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stelfrich/subscriptions","organizations_url":"https://api.github.com/users/stelfrich/orgs","repos_url":"https://api.github.com/users/stelfrich/repos","events_url":"https://api.github.com/users/stelfrich/events{/privacy}","received_events_url":"https://api.github.com/users/stelfrich/received_events","type":"User","site_admin":false},"created_at":"2016-05-30T07:50:10Z","updated_at":"2016-05-30T07:50:10Z","body":"@dietzc I have done some benchmarks for the local mean thresholding on 1000px * 1000px randomly generated images with rectangular windows of different spans:\r\n![runtimes](https://cloud.githubusercontent.com/assets/333358/15642869/57e8a0c6-264a-11e6-95a8-99117b1bc598.png)\r\nFrom that point of view we should definitely get this merged :smile:\r\n\r\nHowever, I also compared runtimes of the local mean thresholding for the two implementations of integral images (the re-implementation as op with the SliceOp and the imglib2 original). The imglib2 version outperforms the re-implementation:\r\n```\r\nRe-implementation   614.363 ± 56.873 ms/op\r\nImglib2             411.373 ± 42.024 ms/op\r\n```\r\n\r\nFurther benchmarks and profiling revealed that the re-implementation an order of magnitude slower than the original one due to the copying in [AbstractIntegralImg:L119](https://github.com/imagej/imagej-ops/pull/387/files#diff-b6f5aded641f401104304fef4a646b76R119):\r\n```\r\nDefaultIntegralImg   112.643 ± 7.317 ms/op\r\nWrappedIntegralImg   13.856 ± 2.251 ms/op\r\n```"}}
{"actor":{"display_login":"stelfrich"}}