pyfast 4.12.0__cp36-abi3-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. fast/README.md +41 -0
  2. fast/__init__.py +22 -0
  3. fast/bin/DirectML.dll +0 -0
  4. fast/bin/FAST.dll +0 -0
  5. fast/bin/InferenceEngineONNXRuntime.dll +0 -0
  6. fast/bin/InferenceEngineOpenVINO.dll +0 -0
  7. fast/bin/InferenceEngineTensorFlow.dll +0 -0
  8. fast/bin/InferenceEngineTensorRT.dll +0 -0
  9. fast/bin/JKQTCommonSharedLib_Release.dll +0 -0
  10. fast/bin/JKQTFastPlotterSharedLib_Release.dll +0 -0
  11. fast/bin/JKQTMathTextSharedLib_Release.dll +0 -0
  12. fast/bin/JKQTPlotterSharedLib_Release.dll +0 -0
  13. fast/bin/OpenCL.dll +0 -0
  14. fast/bin/OpenIGTLink.dll +0 -0
  15. fast/bin/Qt5Concurrent.dll +0 -0
  16. fast/bin/Qt5Core.dll +0 -0
  17. fast/bin/Qt5DBus.dll +0 -0
  18. fast/bin/Qt5Gui.dll +0 -0
  19. fast/bin/Qt5Multimedia.dll +0 -0
  20. fast/bin/Qt5MultimediaWidgets.dll +0 -0
  21. fast/bin/Qt5Network.dll +0 -0
  22. fast/bin/Qt5OpenGL.dll +0 -0
  23. fast/bin/Qt5PrintSupport.dll +0 -0
  24. fast/bin/Qt5SerialPort.dll +0 -0
  25. fast/bin/Qt5Sql.dll +0 -0
  26. fast/bin/Qt5Svg.dll +0 -0
  27. fast/bin/Qt5Test.dll +0 -0
  28. fast/bin/Qt5Widgets.dll +0 -0
  29. fast/bin/Qt5Xml.dll +0 -0
  30. fast/bin/UFFviewer.exe +0 -0
  31. fast/bin/_fast.pyd +0 -0
  32. fast/bin/brotlicommon.dll +0 -0
  33. fast/bin/brotlidec.dll +0 -0
  34. fast/bin/brotlienc.dll +0 -0
  35. fast/bin/cache.json +114134 -0
  36. fast/bin/dcmdata.dll +0 -0
  37. fast/bin/dcmimage.dll +0 -0
  38. fast/bin/dcmimgle.dll +0 -0
  39. fast/bin/dcmjpeg.dll +0 -0
  40. fast/bin/fast_configuration.txt +14 -0
  41. fast/bin/gna.dll +0 -0
  42. fast/bin/ijg12.dll +0 -0
  43. fast/bin/ijg16.dll +0 -0
  44. fast/bin/ijg8.dll +0 -0
  45. fast/bin/jxl.dll +0 -0
  46. fast/bin/jxl_cms.dll +0 -0
  47. fast/bin/jxl_threads.dll +0 -0
  48. fast/bin/libcrypto-1_1-x64.dll +0 -0
  49. fast/bin/libjpeg.dll +0 -0
  50. fast/bin/libopenslide-1.dll +0 -0
  51. fast/bin/libssl-1_1-x64.dll +0 -0
  52. fast/bin/oflog.dll +0 -0
  53. fast/bin/ofstd.dll +0 -0
  54. fast/bin/onnxruntime.dll +0 -0
  55. fast/bin/onnxruntime_providers_shared.dll +0 -0
  56. fast/bin/openvino.dll +0 -0
  57. fast/bin/openvino_auto_batch_plugin.dll +0 -0
  58. fast/bin/openvino_auto_plugin.dll +0 -0
  59. fast/bin/openvino_c.dll +0 -0
  60. fast/bin/openvino_gapi_preproc.dll +0 -0
  61. fast/bin/openvino_hetero_plugin.dll +0 -0
  62. fast/bin/openvino_intel_cpu_plugin.dll +0 -0
  63. fast/bin/openvino_intel_gna_plugin.dll +0 -0
  64. fast/bin/openvino_intel_gpu_plugin.dll +0 -0
  65. fast/bin/openvino_ir_frontend.dll +0 -0
  66. fast/bin/openvino_onnx_frontend.dll +0 -0
  67. fast/bin/openvino_paddle_frontend.dll +0 -0
  68. fast/bin/plugins.xml +24 -0
  69. fast/bin/realsense2.dll +0 -0
  70. fast/bin/runPipeline.exe +0 -0
  71. fast/bin/systemCheck.exe +0 -0
  72. fast/bin/tbb.dll +0 -0
  73. fast/bin/tbb_preview.dll +0 -0
  74. fast/bin/tbbbind.dll +0 -0
  75. fast/bin/tbbmalloc.dll +0 -0
  76. fast/bin/tbbmalloc_proxy.dll +0 -0
  77. fast/bin/tiff.dll +0 -0
  78. fast/bin/zlib.dll +0 -0
  79. fast/doc/bright-plotting-style.ini +66 -0
  80. fast/doc/dark-plotting-style.ini +66 -0
  81. fast/doc/fonts/UFL.txt +96 -0
  82. fast/doc/fonts/Ubuntu-Bold.ttf +0 -0
  83. fast/doc/fonts/Ubuntu-BoldItalic.ttf +0 -0
  84. fast/doc/fonts/Ubuntu-Italic.ttf +0 -0
  85. fast/doc/fonts/Ubuntu-Light.ttf +0 -0
  86. fast/doc/fonts/Ubuntu-LightItalic.ttf +0 -0
  87. fast/doc/fonts/Ubuntu-Medium.ttf +0 -0
  88. fast/doc/fonts/Ubuntu-MediumItalic.ttf +0 -0
  89. fast/doc/fonts/Ubuntu-Regular.ttf +0 -0
  90. fast/doc/fonts/UbuntuMono-Bold.ttf +0 -0
  91. fast/doc/fonts/UbuntuMono-BoldItalic.ttf +0 -0
  92. fast/doc/fonts/UbuntuMono-Italic.ttf +0 -0
  93. fast/doc/fonts/UbuntuMono-Regular.ttf +0 -0
  94. fast/doc/images/FAST_logo_square.png +0 -0
  95. fast/doc/images/fast_icon.ico +0 -0
  96. fast/doc/images/fast_icon.png +0 -0
  97. fast/entry_points.py +14 -0
  98. fast/fast.py +20057 -0
  99. fast/kernels/Algorithms/AirwaySegmentation/AirwaySegmentation.cl +85 -0
  100. fast/kernels/Algorithms/ApplyColormap/ApplyColormap.cl +146 -0
  101. fast/kernels/Algorithms/BinaryThresholding/BinaryThresholding2D.cl +61 -0
  102. fast/kernels/Algorithms/BinaryThresholding/BinaryThresholding3D.cl +61 -0
  103. fast/kernels/Algorithms/BlockMatching/BlockMatching.cl +257 -0
  104. fast/kernels/Algorithms/CenterlineExtraction/CenterlineExtraction.cl +153 -0
  105. fast/kernels/Algorithms/CoherentPointDrift/CoherentPointDrift.cl +0 -0
  106. fast/kernels/Algorithms/Color/ColorToGrayscale.cl +22 -0
  107. fast/kernels/Algorithms/Color/GrayscaleToColor.cl +19 -0
  108. fast/kernels/Algorithms/GaussianSmoothing/GaussianSmoothing2D.cl +35 -0
  109. fast/kernels/Algorithms/GaussianSmoothing/GaussianSmoothing3D.cl +75 -0
  110. fast/kernels/Algorithms/GradientVectorFlow/EulerGradientVectorFlow.cl +174 -0
  111. fast/kernels/Algorithms/GradientVectorFlow/MultigridGradientVectorFlow.cl +407 -0
  112. fast/kernels/Algorithms/HounsefieldConverter/HounsefieldConverter.cl +22 -0
  113. fast/kernels/Algorithms/ImageAdd/ImageAdd.cl +79 -0
  114. fast/kernels/Algorithms/ImageCaster/ImageCaster.cl +38 -0
  115. fast/kernels/Algorithms/ImageChannelConverter/ImageChannelConverter.cl +121 -0
  116. fast/kernels/Algorithms/ImageFlipper/ImageFlipper2D.cl +23 -0
  117. fast/kernels/Algorithms/ImageFlipper/ImageFlipper3D.cl +51 -0
  118. fast/kernels/Algorithms/ImageGradient/ImageGradient.cl +71 -0
  119. fast/kernels/Algorithms/ImageInverter/ImageInverter.cl +30 -0
  120. fast/kernels/Algorithms/ImageMultiply/ImageMultiply.cl +79 -0
  121. fast/kernels/Algorithms/ImagePatch/PatchStitcher2D.cl +22 -0
  122. fast/kernels/Algorithms/ImagePatch/PatchStitcher3D.cl +95 -0
  123. fast/kernels/Algorithms/ImageResampler/ImageResampler2D.cl +40 -0
  124. fast/kernels/Algorithms/ImageResampler/ImageResampler3D.cl +32 -0
  125. fast/kernels/Algorithms/ImageResizer/ImageResizer.cl +134 -0
  126. fast/kernels/Algorithms/ImageSharpening/ImageSharpening.cl +47 -0
  127. fast/kernels/Algorithms/ImageSlicer/ImageSlicer.cl +77 -0
  128. fast/kernels/Algorithms/ImageTransposer/ImageTransposer2D.cl +16 -0
  129. fast/kernels/Algorithms/ImageTransposer/ImageTransposer3D.cl +45 -0
  130. fast/kernels/Algorithms/IntensityClipping/IntensityClipping2D.cl +19 -0
  131. fast/kernels/Algorithms/IntensityClipping/IntensityClipping3D.cl +20 -0
  132. fast/kernels/Algorithms/IntensityNormalization/IntensityNormalization.cl +85 -0
  133. fast/kernels/Algorithms/IntensityNormalization/ZeroMeanUnitVariance.cl +76 -0
  134. fast/kernels/Algorithms/KalmanFilterModelSegmentation/AppearanceModels/RidgeEdge/RidgeEdgeModel.cl +81 -0
  135. fast/kernels/Algorithms/LabelModifier/LabelModifier.cl +20 -0
  136. fast/kernels/Algorithms/LaplacianOfGaussian/LaplacianOfGaussian2D.cl +27 -0
  137. fast/kernels/Algorithms/LevelSet/LevelSetSegmentation.cl +132 -0
  138. fast/kernels/Algorithms/LungSegmentation/LungSegmentation.cl +22 -0
  139. fast/kernels/Algorithms/MeshToSegmentation/MeshToSegmentation.cl +184 -0
  140. fast/kernels/Algorithms/Morphology/Dilation.cl +56 -0
  141. fast/kernels/Algorithms/Morphology/Erosion.cl +64 -0
  142. fast/kernels/Algorithms/NeuralNetwork/NeuralNetwork.cl +122 -0
  143. fast/kernels/Algorithms/NeuralNetwork/VertexTensorToSegmentation.cl +13 -0
  144. fast/kernels/Algorithms/NonLocalMeans/NonLocalMeans2D.cl +94 -0
  145. fast/kernels/Algorithms/SeededRegionGrowing/SeededRegionGrowing2D.cl +57 -0
  146. fast/kernels/Algorithms/SeededRegionGrowing/SeededRegionGrowing3D.cl +58 -0
  147. fast/kernels/Algorithms/Skeletonization/Skeletonization2D.cl +77 -0
  148. fast/kernels/Algorithms/SurfaceExtraction/SurfaceExtraction.cl +519 -0
  149. fast/kernels/Algorithms/SurfaceExtraction/SurfaceExtraction_no_3d_write.cl +739 -0
  150. fast/kernels/Algorithms/TemporalSmoothing/ImageMovingAverage.cl +66 -0
  151. fast/kernels/Algorithms/TemporalSmoothing/ImageWeightedMovingAverage.cl +74 -0
  152. fast/kernels/Algorithms/TissueSegmentation/TissueSegmentation.cl +18 -0
  153. fast/kernels/Algorithms/TubeSegmentationAndCenterlineExtraction/InverseGradientSegmentation.cl +203 -0
  154. fast/kernels/Algorithms/TubeSegmentationAndCenterlineExtraction/TubeSegmentationAndCenterlineExtraction.cl +566 -0
  155. fast/kernels/Algorithms/Ultrasound/EnvelopeAndLogCompressor.cl +45 -0
  156. fast/kernels/Algorithms/Ultrasound/ScanConverter.cl +76 -0
  157. fast/kernels/Algorithms/UltrasoundImageCropper/UltrasoundImageCropper.cl +31 -0
  158. fast/kernels/Algorithms/UltrasoundImageEnhancement/UltrasoundImageEnhancement.cl +27 -0
  159. fast/kernels/Algorithms/VectorMedianFilter/VectorMedianFilter.cl +31 -0
  160. fast/kernels/ImageFill.cl +30 -0
  161. fast/kernels/ImageMinMax.cl +196 -0
  162. fast/kernels/ImageSum.cl +170 -0
  163. fast/kernels/Tests/Algorithms/DoubleFilter.cl +7 -0
  164. fast/kernels/Visualization/BoundingBoxRenderer/BoundingBoxRenderer.frag +8 -0
  165. fast/kernels/Visualization/BoundingBoxRenderer/BoundingBoxRenderer.geom +69 -0
  166. fast/kernels/Visualization/BoundingBoxRenderer/BoundingBoxRenderer.vert +17 -0
  167. fast/kernels/Visualization/HeatmapRenderer/HeatmapRenderer.cl +51 -0
  168. fast/kernels/Visualization/ImagePyramidRenderer/ImagePyramidRenderer.frag +11 -0
  169. fast/kernels/Visualization/ImagePyramidRenderer/ImagePyramidRenderer.vert +15 -0
  170. fast/kernels/Visualization/ImageRenderer/ImageRenderer.vert +15 -0
  171. fast/kernels/Visualization/ImageRenderer/ImageRendererFLOAT.frag +18 -0
  172. fast/kernels/Visualization/ImageRenderer/ImageRendererINT.frag +18 -0
  173. fast/kernels/Visualization/ImageRenderer/ImageRendererUINT.frag +18 -0
  174. fast/kernels/Visualization/LineRenderer/LineRenderer.frag +8 -0
  175. fast/kernels/Visualization/LineRenderer/LineRenderer.geom +35 -0
  176. fast/kernels/Visualization/LineRenderer/LineRenderer.vert +20 -0
  177. fast/kernels/Visualization/LineRenderer/LineRenderer3D.frag +8 -0
  178. fast/kernels/Visualization/LineRenderer/LineRenderer3D.vert +20 -0
  179. fast/kernels/Visualization/LineRenderer/LineRendererJoints.frag +15 -0
  180. fast/kernels/Visualization/LineRenderer/LineRendererJoints.vert +24 -0
  181. fast/kernels/Visualization/SegmentationLabelRenderer/SegmentationLabelRenderer.frag +11 -0
  182. fast/kernels/Visualization/SegmentationLabelRenderer/SegmentationLabelRenderer.vert +16 -0
  183. fast/kernels/Visualization/SegmentationRenderer/SegmentationPyramidRenderer.frag +53 -0
  184. fast/kernels/Visualization/SegmentationRenderer/SegmentationRenderer.frag +52 -0
  185. fast/kernels/Visualization/SegmentationRenderer/SegmentationRenderer.vert +15 -0
  186. fast/kernels/Visualization/TextRenderer/TextRenderer.frag +11 -0
  187. fast/kernels/Visualization/TextRenderer/TextRenderer.vert +20 -0
  188. fast/kernels/Visualization/TriangleRenderer/TriangleRenderer.frag +49 -0
  189. fast/kernels/Visualization/TriangleRenderer/TriangleRenderer.vert +35 -0
  190. fast/kernels/Visualization/VectorFieldRenderer/VectorFieldColorRenderer.cl +30 -0
  191. fast/kernels/Visualization/VertexRenderer/VertexRenderer.frag +14 -0
  192. fast/kernels/Visualization/VertexRenderer/VertexRenderer.vert +23 -0
  193. fast/kernels/Visualization/View.cl +10 -0
  194. fast/kernels/Visualization/VolumeRenderer/AlphaBlendingVolumeRenderer.cl +211 -0
  195. fast/kernels/Visualization/VolumeRenderer/MaximumIntensityProjection.cl +139 -0
  196. fast/kernels/Visualization/VolumeRenderer/ThresholdVolumeRenderer.cl +178 -0
  197. fast/licenses/LICENSE +203 -0
  198. fast/licenses/MSVC/MSVC_redis_files_license.txt +96 -0
  199. fast/licenses/OpenIGTLink/LICENSE.txt +30 -0
  200. fast/licenses/OpenJPEG/LICENSE +39 -0
  201. fast/licenses/OpenSlide/COPYING.LESSER +504 -0
  202. fast/licenses/PCRE2/LICENCE.md +103 -0
  203. fast/licenses/SQLite/PUBLIC-DOMAIN.txt +9 -0
  204. fast/licenses/THIRD_PARTY_TF_C_LICENSES +7955 -0
  205. fast/licenses/cairo/COPYING +33 -0
  206. fast/licenses/cairo/COPYING-LGPL-2.1 +510 -0
  207. fast/licenses/cairo/COPYING-MPL-1.1 +470 -0
  208. fast/licenses/clarius/LICENSE +29 -0
  209. fast/licenses/dcmtk/COPYRIGHT +1034 -0
  210. fast/licenses/directml/LICENSE-CODE.txt +21 -0
  211. fast/licenses/directml/LICENSE.txt +48 -0
  212. fast/licenses/directml/ThirdPartyNotices.txt +103 -0
  213. fast/licenses/eigen/COPYING.APACHE +203 -0
  214. fast/licenses/eigen/COPYING.BSD +26 -0
  215. fast/licenses/eigen/COPYING.GPL +674 -0
  216. fast/licenses/eigen/COPYING.LGPL +502 -0
  217. fast/licenses/eigen/COPYING.MINPACK +51 -0
  218. fast/licenses/eigen/COPYING.MPL2 +373 -0
  219. fast/licenses/eigen/COPYING.README +18 -0
  220. fast/licenses/fast/LICENSE +25 -0
  221. fast/licenses/gdk-pixbuf/COPYING +502 -0
  222. fast/licenses/glib/COPYING +175 -0
  223. fast/licenses/hdf5/COPYING +106 -0
  224. fast/licenses/jkqtplotter/LICENSE +505 -0
  225. fast/licenses/jpegxl/LICENSE.brotli +19 -0
  226. fast/licenses/jpegxl/LICENSE.highway +201 -0
  227. fast/licenses/jpegxl/LICENSE.jpeg-xl +27 -0
  228. fast/licenses/jpegxl/LICENSE.skcms +29 -0
  229. fast/licenses/jpegxl/PATENTS +22 -0
  230. fast/licenses/libdicom/LICENSE +21 -0
  231. fast/licenses/libffi/LICENSE +21 -0
  232. fast/licenses/libjpeg-turbo/LICENSE.md +135 -0
  233. fast/licenses/libjpeg-turbo/README.ijg +260 -0
  234. fast/licenses/libpng/LICENSE +134 -0
  235. fast/licenses/libtiff/LICENSE.md +23 -0
  236. fast/licenses/libxml2/Copyright +24 -0
  237. fast/licenses/onnxruntime/LICENSE +21 -0
  238. fast/licenses/onnxruntime/Privacy.md +21 -0
  239. fast/licenses/onnxruntime/ThirdPartyNotices.txt +6156 -0
  240. fast/licenses/opencl/LICENSE +201 -0
  241. fast/licenses/openssl/LICENSE.txt +125 -0
  242. fast/licenses/openvino/Apache_license.txt +201 -0
  243. fast/licenses/openvino/EULA.htm +43 -0
  244. fast/licenses/openvino/EULA.rtf +61 -0
  245. fast/licenses/openvino/EULA.txt +163 -0
  246. fast/licenses/openvino/GNA SOFTWARE LICENSE AGREEMENT.txt +1 -0
  247. fast/licenses/openvino/Intel_Software_Development_Products.rtf +1217 -0
  248. fast/licenses/openvino/Intel_Software_Development_Products.txt +707 -0
  249. fast/licenses/openvino/LICENSE +201 -0
  250. fast/licenses/openvino/OpenVINOsupport.txt +12 -0
  251. fast/licenses/openvino/onednn_third-party-programs.txt +557 -0
  252. fast/licenses/openvino/readme.txt +60 -0
  253. fast/licenses/openvino/redist.txt +42 -0
  254. fast/licenses/openvino/runtime-third-party-programs.txt +1400 -0
  255. fast/licenses/openvino/tbb_third-party-programs.txt +230 -0
  256. fast/licenses/pixman/COPYING +42 -0
  257. fast/licenses/proxy-libintl/COPYING +482 -0
  258. fast/licenses/qt5/LICENSE.FDL +450 -0
  259. fast/licenses/qt5/LICENSE.GPL3-EXCEPT +704 -0
  260. fast/licenses/qt5/LICENSE.GPLv2 +292 -0
  261. fast/licenses/qt5/LICENSE.GPLv3 +686 -0
  262. fast/licenses/qt5/LICENSE.LGPLv21 +514 -0
  263. fast/licenses/qt5/LICENSE.LGPLv3 +175 -0
  264. fast/licenses/qt5/LICENSE.QT-LICENSE-AGREEMENT +1331 -0
  265. fast/licenses/realsense/LICENSE +202 -0
  266. fast/licenses/realsense/NOTICE +937 -0
  267. fast/licenses/semaphore/Semaphore_LICENSE.txt +17 -0
  268. fast/licenses/tiff/COPYRIGHT +21 -0
  269. fast/licenses/uthash/LICENSE +21 -0
  270. fast/licenses/zip/UNLICENSE +26 -0
  271. fast/licenses/zlib/README +115 -0
  272. fast/licenses/zlib-ng/LICENSE.md +19 -0
  273. fast/pipelines/uff_viewer/colormap_and_reject.fpl +26 -0
  274. fast/pipelines/uff_viewer/default.fpl +9 -0
  275. fast/pipelines/uff_viewer/non_local_means.fpl +34 -0
  276. fast/plugins/audio/qtaudio_wasapi.dll +0 -0
  277. fast/plugins/audio/qtaudio_windows.dll +0 -0
  278. fast/plugins/bearer/qgenericbearer.dll +0 -0
  279. fast/plugins/generic/qtuiotouchplugin.dll +0 -0
  280. fast/plugins/iconengines/qsvgicon.dll +0 -0
  281. fast/plugins/imageformats/qgif.dll +0 -0
  282. fast/plugins/imageformats/qicns.dll +0 -0
  283. fast/plugins/imageformats/qico.dll +0 -0
  284. fast/plugins/imageformats/qjpeg.dll +0 -0
  285. fast/plugins/imageformats/qsvg.dll +0 -0
  286. fast/plugins/imageformats/qtga.dll +0 -0
  287. fast/plugins/imageformats/qtiff.dll +0 -0
  288. fast/plugins/imageformats/qwbmp.dll +0 -0
  289. fast/plugins/imageformats/qwebp.dll +0 -0
  290. fast/plugins/mediaservice/dsengine.dll +0 -0
  291. fast/plugins/mediaservice/qtmedia_audioengine.dll +0 -0
  292. fast/plugins/mediaservice/wmfengine.dll +0 -0
  293. fast/plugins/platforms/qdirect2d.dll +0 -0
  294. fast/plugins/platforms/qminimal.dll +0 -0
  295. fast/plugins/platforms/qoffscreen.dll +0 -0
  296. fast/plugins/platforms/qwindows.dll +0 -0
  297. fast/plugins/platformthemes/qxdgdesktopportal.dll +0 -0
  298. fast/plugins/playlistformats/qtmultimedia_m3u.dll +0 -0
  299. fast/plugins/printsupport/windowsprintersupport.dll +0 -0
  300. fast/plugins/sqldrivers/qsqlite.dll +0 -0
  301. fast/plugins/sqldrivers/qsqlodbc.dll +0 -0
  302. fast/plugins/styles/qwindowsvistastyle.dll +0 -0
  303. pyfast-4.12.0.dist-info/METADATA +81 -0
  304. pyfast-4.12.0.dist-info/RECORD +307 -0
  305. pyfast-4.12.0.dist-info/WHEEL +5 -0
  306. pyfast-4.12.0.dist-info/entry_points.txt +5 -0
  307. pyfast-4.12.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,31 @@
1
+ __constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE | CLK_FILTER_NEAREST;
2
+
3
+
4
+ __kernel void lineSearch(
5
+ __read_only image2d_t image,
6
+ __global uint* rays
7
+ ) {
8
+
9
+ const int i = get_global_id(0);
10
+ uint result = 0;
11
+ const int width = get_image_width(image);
12
+ const int height = get_image_height(image);
13
+
14
+ if(i < width) {
15
+ for(int y = height/6; y < height*5/6; ++y) {
16
+ int2 position = {i, y};
17
+ if(read_imageui(image, sampler, position).x > 0) {
18
+ result += 1;
19
+ }
20
+ }
21
+ } else {
22
+ for(int x = width/6; x < width*5/6; ++x) {
23
+ int2 position = {x, i - width};
24
+ if(read_imageui(image, sampler, position).x > 0) {
25
+ result += 1;
26
+ }
27
+ }
28
+ }
29
+
30
+ rays[i] = result;
31
+ }
@@ -0,0 +1,27 @@
1
+ __constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE | CLK_FILTER_NEAREST;
2
+
3
+ __kernel void enhance(
4
+ __read_only image2d_t input,
5
+ __write_only image2d_t output,
6
+ __private int reject
7
+ ) {
8
+ const int2 pos = {get_global_id(0), get_global_id(1)};
9
+
10
+ float intensity = (float)read_imageui(input, sampler, pos).x;
11
+ if(intensity < reject)
12
+ intensity = 0.0f;
13
+ // Apply a nonlinear S-curve
14
+ float k = -0.2;
15
+ intensity = (intensity/255.0f)*2.0f-1.0f;
16
+ uchar value = (uchar)round(255*(((intensity - k*intensity)/(k - 2*k*fabs(intensity)+1))+1.0f)/2.0f);
17
+ //uchar value = intensity;
18
+ uint4 color = {value, value, value, 255};
19
+ // Apply a hint of blue
20
+ if(value > 0) {
21
+ color.y -= 1;
22
+ color.z += 4;
23
+ }
24
+ color = clamp(color, (uint)0, (uint)255);
25
+
26
+ write_imageui(output, pos, color);
27
+ }
@@ -0,0 +1,31 @@
1
+ __constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
2
+
3
+ __kernel void vectorMedianFilter(
4
+ __read_only image2d_t input,
5
+ __write_only image2d_t output,
6
+ __private int windowHalf
7
+ ) {
8
+ const int2 pos = {get_global_id(0), get_global_id(1)};
9
+
10
+ float2 bestVector;
11
+ float bestSum = FLT_MAX;
12
+ for(int y = -windowHalf; y <= windowHalf; ++y) {
13
+ for(int x = -windowHalf; x <= windowHalf; ++x) {
14
+ float2 a_m = read_imagef(input, sampler, pos + (int2)(x, y)).xy;
15
+ float sum = 0.0f;
16
+ for(int y2 = -windowHalf; y2 <= windowHalf; ++y2) {
17
+ for(int x2 = -windowHalf; x2 <= windowHalf; ++x2) {
18
+ float2 a_i = read_imagef(input, sampler, pos + (int2)(x2, y2)).xy;
19
+ //sum += dot(fabs(a_m - a_i), (float2)(1,1)); // L1 norm
20
+ sum += length(a_m - a_i); // L2 norm
21
+ }
22
+ }
23
+ if(sum < bestSum) {
24
+ bestVector = a_m;
25
+ bestSum = sum;
26
+ }
27
+ }
28
+ }
29
+
30
+ write_imagef(output, pos, bestVector.xyyy);
31
+ }
@@ -0,0 +1,30 @@
1
+ __kernel void fillImage2D(
2
+ __write_only image2d_t image,
3
+ __private float value
4
+ ) {
5
+ const int2 pos = {get_global_id(0), get_global_id(1)};
6
+ int dataType = get_image_channel_data_type(image);
7
+ if(dataType == CLK_FLOAT) {
8
+ write_imagef(image, pos, (float4)(value, value, value, value));
9
+ } else if(dataType == CLK_SIGNED_INT8 || dataType == CLK_SIGNED_INT16 || dataType == CLK_SIGNED_INT32) {
10
+ write_imagei(image, pos, (int4)(value, value, value, value));
11
+ } else {
12
+ write_imageui(image, pos, (uint4)(value, value, value, value));
13
+ }
14
+ }
15
+
16
+ /*
17
+ __kernel void fillImage3D(
18
+ __write_only image3d_t image,
19
+ float value) {
20
+ const int4 pos = {get_global_id(0), get_global_id(1), get_global_id(2), 0};
21
+ int dataType = get_image_channel_data_type(image);
22
+ if(dataType == CLK_FLOAT) {
23
+ write_imagef(image, pos, (float4)(value, value, value, value));
24
+ } else if(dataType == CLK_SIGNED_INT8 || dataType == CLK_SIGNED_INT16 || dataType == CLK_SIGNED_INT32) {
25
+ write_imagei(image, pos, (int4)(value, value, value, value));
26
+ } else {
27
+ write_imageui(image, pos, (uint4)(value, value, value, value));
28
+ }
29
+ }
30
+ */
@@ -0,0 +1,196 @@
1
+
2
+ #ifdef TYPE_FLOAT
3
+ #define TYPE float4
4
+ #define BUFFER_TYPE float
5
+ #define READ_IMAGE read_imagef
6
+ #define WRITE_IMAGE write_imagef
7
+ #define MAX_VALUE FLT_MAX
8
+ #define MIN_VALUE FLT_MIN
9
+ #elif TYPE_UINT8
10
+ #define TYPE uint4
11
+ #define BUFFER_TYPE uchar
12
+ #define READ_IMAGE read_imageui
13
+ #define WRITE_IMAGE write_imageui
14
+ #define MAX_VALUE UCHAR_MAX
15
+ #define MIN_VALUE 0
16
+ #elif TYPE_INT8
17
+ #define TYPE int4
18
+ #define BUFFER_TYPE char
19
+ #define READ_IMAGE read_imagei
20
+ #define WRITE_IMAGE write_imagei
21
+ #define MAX_VALUE CHAR_MAX
22
+ #define MIN_VALUE CHAR_MIN
23
+ #elif TYPE_UINT16
24
+ #define TYPE uint4
25
+ #define BUFFER_TYPE ushort
26
+ #define READ_IMAGE read_imageui
27
+ #define WRITE_IMAGE write_imageui
28
+ #define MAX_VALUE USHRT_MAX
29
+ #define MIN_VALUE 0
30
+ #elif TYPE_INT16
31
+ #define TYPE int4
32
+ #define BUFFER_TYPE short
33
+ #define READ_IMAGE read_imagei
34
+ #define WRITE_IMAGE write_imagei
35
+ #define MAX_VALUE SHRT_MAX
36
+ #define MIN_VALUE SHRT_MIN
37
+ #elif TYPE_UINT32
38
+ #define TYPE uint4
39
+ #define BUFFER_TYPE uint
40
+ #define READ_IMAGE read_imageui
41
+ #define WRITE_IMAGE write_imageui
42
+ #define MAX_VALUE UINT_MAX
43
+ #define MIN_VALUE 0
44
+ #else
45
+ #define TYPE int4
46
+ #define BUFFER_TYPE int
47
+ #define READ_IMAGE read_imagei
48
+ #define WRITE_IMAGE write_imagei
49
+ #define MAX_VALUE INT_MAX
50
+ #define MIN_VALUE INT_MIN
51
+ #endif
52
+
53
+ __constant int2 offset2D[4] = {
54
+ {0,0},
55
+ {0,1},
56
+ {1,0},
57
+ {1,1}
58
+ };
59
+
60
+ __constant int4 offset3D[8] = {
61
+ {0,0,0,0},
62
+ {1,0,0,0},
63
+ {0,1,0,0},
64
+ {0,0,1,0},
65
+ {1,0,1,0},
66
+ {1,1,1,0},
67
+ {0,1,1,0},
68
+ {1,1,0,0}
69
+ };
70
+
71
+ __constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE | CLK_FILTER_NEAREST;
72
+
73
+ __kernel void createFirstMinMaxImage2DLevel(
74
+ __read_only image2d_t image,
75
+ __write_only image2d_t firstLevel
76
+ ) {
77
+ const int2 pos = {get_global_id(0), get_global_id(1)};
78
+ const int2 readPos = pos*2;
79
+ const int2 size = {get_image_width(image), get_image_height(image)};
80
+
81
+ TYPE result = {MAX_VALUE, MIN_VALUE,0,0};
82
+ for(int i = 0; i < 4; i++) {
83
+ TYPE temp;
84
+ temp = READ_IMAGE(image, sampler, select((int2)(0,0), readPos+offset2D[i], readPos+offset2D[i] < size));
85
+ result.x = min(result.x, temp.x);
86
+ result.y = max(result.y, temp.x);
87
+ }
88
+
89
+ WRITE_IMAGE(firstLevel, pos, result);
90
+ }
91
+
92
+ __kernel void createMinMaxImage2DLevel(
93
+ __read_only image2d_t readLevel,
94
+ __write_only image2d_t writeLevel
95
+ ) {
96
+ const int2 pos = {get_global_id(0), get_global_id(1)};
97
+ const int2 readPos = pos*2;
98
+
99
+ TYPE result = {MAX_VALUE, MIN_VALUE,0,0};
100
+ TYPE temp;
101
+ temp = READ_IMAGE(readLevel, sampler, readPos + offset2D[0]);
102
+ result.x = min(result.x, temp.x);
103
+ result.y = max(result.y, temp.y);
104
+ temp = READ_IMAGE(readLevel, sampler, readPos + offset2D[1]);
105
+ result.x = min(result.x, temp.x);
106
+ result.y = max(result.y, temp.y);
107
+ temp = READ_IMAGE(readLevel, sampler, readPos + offset2D[2]);
108
+ result.x = min(result.x, temp.x);
109
+ result.y = max(result.y, temp.y);
110
+ temp = READ_IMAGE(readLevel, sampler, readPos + offset2D[3]);
111
+ result.x = min(result.x, temp.x);
112
+ result.y = max(result.y, temp.y);
113
+
114
+ WRITE_IMAGE(writeLevel, pos, result);
115
+ }
116
+
117
+ #ifdef fast_3d_image_writes
118
+ __kernel void createFirstMinMaxImage3DLevel(
119
+ __read_only image3d_t image,
120
+ __write_only image3d_t firstLevel
121
+ ) {
122
+ const int4 pos = {get_global_id(0), get_global_id(1), get_global_id(2), 0};
123
+ const int4 readPos = pos*2;
124
+ const int4 size = {get_image_width(image), get_image_height(image), get_image_depth(image), 1};
125
+
126
+ TYPE result = {MAX_VALUE, MIN_VALUE,0,0};
127
+ for(int i = 0; i < 8; i++) {
128
+ TYPE temp;
129
+ temp = READ_IMAGE(image, sampler, select((int4)(0,0,0,0), readPos+offset3D[i], readPos+offset3D[i] < size));
130
+ result.x = min(result.x, temp.x);
131
+ result.y = max(result.y, temp.x);
132
+ }
133
+
134
+ WRITE_IMAGE(firstLevel, pos, result);
135
+ }
136
+
137
+ __kernel void createMinMaxImage3DLevel(
138
+ __read_only image3d_t readLevel,
139
+ __write_only image3d_t writeLevel
140
+ ) {
141
+ const int4 pos = {get_global_id(0), get_global_id(1), get_global_id(2), 0};
142
+ const int4 readPos = pos*2;
143
+
144
+ TYPE result = {MAX_VALUE, MIN_VALUE,0,0};
145
+ for(int i = 0; i < 8; i++) {
146
+ TYPE temp;
147
+ temp = READ_IMAGE(readLevel, sampler, readPos + offset3D[i]);
148
+ result.x = min(result.x, temp.x);
149
+ result.y = max(result.y, temp.y);
150
+ }
151
+
152
+
153
+ WRITE_IMAGE(writeLevel, pos, result);
154
+ }
155
+ #endif
156
+
157
+ __kernel void reduce(
158
+ __global BUFFER_TYPE* buffer,
159
+ __local BUFFER_TYPE* minScratch,
160
+ __local BUFFER_TYPE* maxScratch,
161
+ __private int length,
162
+ __private int X,
163
+ __global BUFFER_TYPE* result) {
164
+
165
+ int global_index = get_global_id(0)*X;
166
+ BUFFER_TYPE minAccumulator = MAX_VALUE;
167
+ BUFFER_TYPE maxAccumulator = MIN_VALUE;
168
+ // Loop sequentially over chunks of input vector
169
+ for(int i = 0; i < X && global_index < length; i++) {
170
+ float element = buffer[global_index];
171
+ minAccumulator = (minAccumulator < element) ? minAccumulator : element;
172
+ maxAccumulator = (maxAccumulator > element) ? maxAccumulator : element;
173
+ global_index += 1;
174
+ }
175
+
176
+ // Perform parallel reduction
177
+ int local_index = get_local_id(0);
178
+ minScratch[local_index] = minAccumulator;
179
+ maxScratch[local_index] = maxAccumulator;
180
+ barrier(CLK_LOCAL_MEM_FENCE);
181
+ for(int offset = get_local_size(0) / 2; offset > 0; offset = offset / 2) {
182
+ if(local_index < offset) {
183
+ BUFFER_TYPE other = minScratch[local_index + offset];
184
+ BUFFER_TYPE mine = minScratch[local_index];
185
+ minScratch[local_index] = (mine < other) ? mine : other;
186
+ other = maxScratch[local_index + offset];
187
+ mine = maxScratch[local_index];
188
+ maxScratch[local_index] = (mine > other) ? mine : other;
189
+ }
190
+ barrier(CLK_LOCAL_MEM_FENCE);
191
+ }
192
+ if(local_index == 0) {
193
+ result[get_group_id(0)*2] = minScratch[0];
194
+ result[get_group_id(0)*2+1] = maxScratch[0];
195
+ }
196
+ }
@@ -0,0 +1,170 @@
1
+
2
+ #ifdef TYPE_FLOAT
3
+ #define TYPE float4
4
+ #define BUFFER_TYPE float
5
+ #define READ_IMAGE read_imagef
6
+ #define WRITE_IMAGE write_imagef
7
+ #elif TYPE_UINT8
8
+ #define TYPE uint4
9
+ #define BUFFER_TYPE uchar
10
+ #define READ_IMAGE read_imageui
11
+ #define WRITE_IMAGE write_imageui
12
+ #elif TYPE_INT8
13
+ #define TYPE int4
14
+ #define BUFFER_TYPE char
15
+ #define READ_IMAGE read_imagei
16
+ #define WRITE_IMAGE write_imagei
17
+ #elif TYPE_UINT16
18
+ #define TYPE uint4
19
+ #define BUFFER_TYPE ushort
20
+ #define READ_IMAGE read_imageui
21
+ #define WRITE_IMAGE write_imageui
22
+ #elif TYPE_INT16
23
+ #define TYPE int4
24
+ #define BUFFER_TYPE short
25
+ #define READ_IMAGE read_imagei
26
+ #define WRITE_IMAGE write_imagei
27
+ #elif TYPE_UINT32
28
+ #define TYPE uint4
29
+ #define BUFFER_TYPE uint
30
+ #define READ_IMAGE read_imageui
31
+ #define WRITE_IMAGE write_imageui
32
+ #else
33
+ #define TYPE int4
34
+ #define BUFFER_TYPE int
35
+ #define READ_IMAGE read_imagei
36
+ #define WRITE_IMAGE write_imagei
37
+ #endif
38
+
39
+ __constant int2 offset2D[4] = {
40
+ {0,0},
41
+ {0,1},
42
+ {1,0},
43
+ {1,1}
44
+ };
45
+
46
+ __constant int4 offset3D[8] = {
47
+ {0,0,0,0},
48
+ {1,0,0,0},
49
+ {0,1,0,0},
50
+ {0,0,1,0},
51
+ {1,0,1,0},
52
+ {1,1,1,0},
53
+ {0,1,1,0},
54
+ {1,1,0,0}
55
+ };
56
+
57
+ __constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE | CLK_FILTER_NEAREST;
58
+
59
+ __kernel void createFirstSumImage2DLevel(
60
+ __read_only image2d_t image,
61
+ __write_only image2d_t firstLevel
62
+ ) {
63
+ const int2 pos = {get_global_id(0), get_global_id(1)};
64
+ const int2 readPos = pos*2;
65
+ const int2 size = {get_image_width(image), get_image_height(image)};
66
+
67
+ float sum = 0.0f;
68
+ for(int i = 0; i < 4; i++) {
69
+ int2 nPos = readPos + offset2D[i];
70
+ if(nPos.x < size.x && nPos.y < size.y) {
71
+ sum += READ_IMAGE(image, sampler, nPos).x;
72
+ }
73
+ }
74
+
75
+ write_imagef(firstLevel, pos, sum);
76
+ }
77
+
78
+ __kernel void createFirstSumImage3DLevel(
79
+ __read_only image3d_t image,
80
+ __global float* firstLevel
81
+ ) {
82
+ const int4 pos = {get_global_id(0), get_global_id(1), get_global_id(2), 0};
83
+ const int4 readPos = pos*2;
84
+ const int3 size = {get_image_width(image), get_image_height(image), get_image_depth(image)};
85
+
86
+ float sum = 0.0f;
87
+ for(int i = 0; i < 8; ++i) {
88
+ int4 nPos = readPos + offset3D[i];
89
+ if(nPos.x < size.x && nPos.y < size.y && nPos.z < size.z) {
90
+ sum += READ_IMAGE(image, sampler, nPos).x;
91
+ }
92
+ }
93
+
94
+ firstLevel[pos.x+pos.y*get_global_size(0)+pos.z*get_global_size(0)*get_global_size(1)] = sum;
95
+ }
96
+
97
+ __kernel void createSumImage2DLevel(
98
+ __read_only image2d_t readLevel,
99
+ __write_only image2d_t writeLevel
100
+ ) {
101
+ const int2 pos = {get_global_id(0), get_global_id(1)};
102
+ const int2 readPos = pos*2;
103
+
104
+ float sum =
105
+ read_imagef(readLevel, sampler, readPos + offset2D[0]).x +
106
+ read_imagef(readLevel, sampler, readPos + offset2D[1]).x +
107
+ read_imagef(readLevel, sampler, readPos + offset2D[2]).x +
108
+ read_imagef(readLevel, sampler, readPos + offset2D[3]).x;
109
+
110
+ write_imagef(writeLevel, pos, sum);
111
+ }
112
+
113
+ __kernel void createSumImage3DLevel(
114
+ __global float* readLevel,
115
+ __global float* writeLevel
116
+ ) {
117
+ const int3 pos = {get_global_id(0), get_global_id(1), get_global_id(2)};
118
+ const int3 readPos = pos*2;
119
+ const int3 size = {get_global_size(0), get_global_size(1), get_global_size(2)};
120
+ const int3 readSize = size*2;
121
+
122
+ float sum = 0.0f;
123
+ for(int i = 0; i < 8; i++) {
124
+ int3 nPos = readPos + offset3D[i].xyz;
125
+ sum += readLevel[nPos.x+nPos.y*readSize.x+nPos.z*readSize.x*readSize.y];
126
+ }
127
+
128
+ writeLevel[pos.x+pos.y*size.x+pos.z*size.x*size.y] = sum;
129
+ }
130
+
131
+
132
+ __kernel void createFirstStdDevImage2DLevel(
133
+ __read_only image2d_t image,
134
+ __write_only image2d_t firstLevel,
135
+ __private float average
136
+ ) {
137
+ const int2 pos = {get_global_id(0), get_global_id(1)};
138
+ const int2 readPos = pos*2;
139
+ const int2 size = {get_image_width(image), get_image_height(image)};
140
+
141
+ float sum = 0.0f;
142
+ for(int i = 0; i < 4; i++) {
143
+ int2 nPos = readPos + offset2D[i];
144
+ if(nPos.x < size.x && nPos.y < size.y) {
145
+ sum += pow(READ_IMAGE(image, sampler, nPos).x - average, 2.0f);
146
+ }
147
+ }
148
+
149
+ write_imagef(firstLevel, pos, sum);
150
+ }
151
+
152
+ __kernel void createFirstStdDevImage3DLevel(
153
+ __read_only image3d_t image,
154
+ __global float* firstLevel,
155
+ __private float average
156
+ ) {
157
+ const int4 pos = {get_global_id(0), get_global_id(1), get_global_id(2), 0};
158
+ const int4 readPos = pos*2;
159
+ const int3 size = {get_image_width(image), get_image_height(image), get_image_depth(image)};
160
+
161
+ float sum = 0.0f;
162
+ for(int i = 0; i < 8; i++) {
163
+ int4 nPos = readPos + offset3D[i];
164
+ if(nPos.x < size.x && nPos.y < size.y && nPos.z < size.z) {
165
+ sum += pow(READ_IMAGE(image, sampler, nPos).x - average, 2.0f);
166
+ }
167
+ }
168
+
169
+ firstLevel[pos.x+pos.y*get_global_size(0)+pos.z*get_global_size(0)*get_global_size(1)] = sum;
170
+ }
@@ -0,0 +1,7 @@
1
+
2
+ __kernel void doubleFilter(
3
+ __global TYPE * input,
4
+ __global TYPE * output
5
+ ) {
6
+ output[get_global_id(0)] = input[get_global_id(0)]*2;
7
+ }
@@ -0,0 +1,8 @@
1
+ #version 330 core
2
+
3
+ in vec4 geomColor;
4
+ out vec4 fragColor;
5
+
6
+ void main() {
7
+ fragColor = geomColor;
8
+ }
@@ -0,0 +1,69 @@
1
+ #version 330 core
2
+
3
+ layout (lines) in;
4
+ layout (triangle_strip, max_vertices=4) out;
5
+ in vec4 vertexColor[];
6
+ out vec4 geomColor;
7
+
8
+ //uniform float size;
9
+ uniform mat4 perspectiveTransform;
10
+ uniform float borderSize;
11
+
12
+ void main() {
13
+ geomColor = vertexColor[0];
14
+ vec4 first = gl_in[0].gl_Position;
15
+ vec4 second = gl_in[1].gl_Position;
16
+ float pixelWidth = perspectiveTransform[0][0];
17
+ float pixelHeight = perspectiveTransform[1][1];
18
+ float sizeX = borderSize*pixelWidth;
19
+ float sizeY = borderSize*pixelHeight;
20
+
21
+ // Draw bounding box with triangle strips
22
+ if(first.x == second.x) {
23
+ // Vertical line
24
+ if(first.y < second.y) {
25
+ gl_Position = first + vec4(sizeX, -sizeY, 0, 0);
26
+ EmitVertex();
27
+ gl_Position = second + vec4(sizeX, sizeY, 0, 0);
28
+ EmitVertex();
29
+ gl_Position = first + vec4(-sizeX, -sizeY, 0, 0);
30
+ EmitVertex();
31
+ gl_Position = second + vec4(-sizeX, sizeY, 0, 0);
32
+ EmitVertex();
33
+ EndPrimitive();
34
+ } else {
35
+ gl_Position = first + vec4(-sizeX, sizeY, 0, 0);
36
+ EmitVertex();
37
+ gl_Position = second + vec4(-sizeX, -sizeY, 0, 0);
38
+ EmitVertex();
39
+ gl_Position = first + vec4(sizeX, sizeY, 0, 0);
40
+ EmitVertex();
41
+ gl_Position = second + vec4(sizeX, -sizeY, 0, 0);
42
+ EmitVertex();
43
+ EndPrimitive();
44
+ }
45
+ } else {
46
+ // Horizontal line
47
+ if(first.x < second.x) {
48
+ gl_Position = first + vec4(-sizeX, -sizeY, 0, 0);
49
+ EmitVertex();
50
+ gl_Position = second + vec4(sizeX, -sizeY, 0, 0);
51
+ EmitVertex();
52
+ gl_Position = first + vec4(-sizeX, sizeY, 0, 0);
53
+ EmitVertex();
54
+ gl_Position = second + vec4(sizeX, sizeY, 0, 0);
55
+ EmitVertex();
56
+ EndPrimitive();
57
+ } else {
58
+ gl_Position = second + vec4(sizeX, sizeY, 0, 0);
59
+ EmitVertex();
60
+ gl_Position = first + vec4(-sizeX, sizeY, 0, 0);
61
+ EmitVertex();
62
+ gl_Position = second + vec4(sizeX, -sizeY, 0, 0);
63
+ EmitVertex();
64
+ gl_Position = first + vec4(-sizeX, -sizeY, 0, 0);
65
+ EmitVertex();
66
+ EndPrimitive();
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,17 @@
1
+ #version 330 core
2
+ layout (location = 0) in vec3 in_position;
3
+ layout (location = 1) in uint in_label;
4
+ layout (std140) uniform Colors {
5
+ vec4 color[256];
6
+ };
7
+
8
+ out vec4 vertexColor;
9
+
10
+ uniform mat4 transform;
11
+ uniform mat4 viewTransform;
12
+ uniform mat4 perspectiveTransform;
13
+
14
+ void main() {
15
+ gl_Position = perspectiveTransform * viewTransform * transform * vec4(in_position, 1.0);
16
+ vertexColor = in_label < uint(256) ? color[in_label] : vec4(0.0, 0.0, 0.0, 0.0);
17
+ }
@@ -0,0 +1,51 @@
1
+ __constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST;
2
+
3
+ __kernel void renderToTexture(
4
+ __global float* inputTensor,
5
+ __write_only image2d_t output,
6
+ __constant float* colors,
7
+ __private float minConfidence,
8
+ __private float maxOpacity,
9
+ __private int channels
10
+ ) {
11
+ const int2 position = {get_global_id(0), get_global_id(1)};
12
+
13
+ float4 color = {0.0f, 0.0f, 0.0f, 0.0f};
14
+ for(int channel = 0; channel < channels; ++channel) {
15
+ float intensity = inputTensor[(position.x + position.y*get_global_size(0))*channels + channel];
16
+ intensity = clamp(intensity, 0.0f, 1.0f);
17
+
18
+ if(intensity >= minConfidence) {
19
+ float4 colorToUse = vload4(channel, colors);
20
+ color += colorToUse*intensity;
21
+ }
22
+ }
23
+ color = clamp(color, 0.0f, 1.0f);
24
+ if(color.w == 0) { // none with intensity >= minConfidence or 0 found
25
+ color = (float4)(0.0f,0.0f,0.0f,0.0f);
26
+ // Look for neighbors instead
27
+ float highestConfidence = minConfidence;
28
+ for(int a = -1; a <= 1; ++a) {
29
+ for(int b = -1; b <= 1; ++b) {
30
+ int2 nPos = {position.x + a, position.y + b};
31
+ // Out of bounds check:
32
+ if(nPos.x < 0 || nPos.y < 0 || nPos.x >= get_global_size(0) || nPos.y >= get_global_size(1))
33
+ continue;
34
+ for(int channel = 0; channel < channels; ++channel) {
35
+ float intensity = inputTensor[(nPos.x + nPos.y*get_global_size(0))*channels + channel];
36
+
37
+ if(intensity >= highestConfidence) {
38
+ float4 colorToUse = vload4(channel, colors);
39
+ color = colorToUse;
40
+ color.w = 0.0f; // Set opacity to zero
41
+ highestConfidence = intensity;
42
+ }
43
+ }
44
+ }
45
+ }
46
+ } else {
47
+ color.w *= maxOpacity;
48
+ }
49
+ write_imagef(output, position, color);
50
+ }
51
+
@@ -0,0 +1,11 @@
1
+ #version 330 core
2
+ out vec4 FragColor;
3
+
4
+ in vec2 TexCoord;
5
+
6
+ uniform sampler2D ourTexture;
7
+
8
+ void main()
9
+ {
10
+ FragColor = texture(ourTexture, TexCoord);
11
+ }
@@ -0,0 +1,15 @@
1
+ #version 330 core
2
+ layout (location = 0) in vec3 aPos;
3
+ layout (location = 1) in vec2 aTexCoord;
4
+
5
+ out vec2 TexCoord;
6
+
7
+ uniform mat4 transform;
8
+ uniform mat4 viewTransform;
9
+ uniform mat4 perspectiveTransform;
10
+
11
+ void main()
12
+ {
13
+ gl_Position = perspectiveTransform * viewTransform * transform * vec4(aPos, 1.0);
14
+ TexCoord = aTexCoord;
15
+ }
@@ -0,0 +1,15 @@
1
+ #version 330 core
2
+ layout (location = 0) in vec3 aPos;
3
+ layout (location = 1) in vec2 aTexCoord;
4
+
5
+ out vec2 TexCoord;
6
+
7
+ uniform mat4 transform;
8
+ uniform mat4 viewTransform;
9
+ uniform mat4 perspectiveTransform;
10
+
11
+ void main()
12
+ {
13
+ gl_Position = perspectiveTransform * viewTransform * transform * vec4(aPos, 1.0);
14
+ TexCoord = aTexCoord;
15
+ }