melage 0.0.65__py3-none-any.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.
- melage/__init__.py +16 -0
- melage/cli.py +4 -0
- melage/graphics/GLGraphicsItem.py +286 -0
- melage/graphics/GLViewWidget.py +595 -0
- melage/graphics/Transform3D.py +55 -0
- melage/graphics/__init__.py +8 -0
- melage/graphics/functions.py +101 -0
- melage/graphics/items/GLAxisItem.py +149 -0
- melage/graphics/items/GLGridItem.py +178 -0
- melage/graphics/items/GLPolygonItem.py +77 -0
- melage/graphics/items/GLScatterPlotItem.py +135 -0
- melage/graphics/items/GLVolumeItem.py +280 -0
- melage/graphics/items/GLVolumeItem_b.py +237 -0
- melage/graphics/items/__init__.py +0 -0
- melage/graphics/shaders.py +202 -0
- melage/main.py +270 -0
- melage/requirements22.txt +25 -0
- melage/requirements_old.txt +28 -0
- melage/resource/0circle.png +0 -0
- melage/resource/0circle_faded.png +0 -0
- melage/resource/3d.png +0 -0
- melage/resource/3d.psd +0 -0
- melage/resource/3dFaded.png +0 -0
- melage/resource/Eraser.png +0 -0
- melage/resource/EraserFaded.png +0 -0
- melage/resource/EraserX.png +0 -0
- melage/resource/EraserXFaded.png +0 -0
- melage/resource/Eraser_icon.svg +79 -0
- melage/resource/Hand.png +0 -0
- melage/resource/HandIcons_0.png +0 -0
- melage/resource/Hand_IX.png +0 -0
- melage/resource/Hand_IXFaded.png +0 -0
- melage/resource/Handsqueezed.png +0 -0
- melage/resource/Handwriting (copy).png +0 -0
- melage/resource/Handwriting.png +0 -0
- melage/resource/HandwritingMinus.png +0 -0
- melage/resource/HandwritingMinusX.png +0 -0
- melage/resource/HandwritingPlus.png +0 -0
- melage/resource/HandwritingPlusX.png +0 -0
- melage/resource/Move_icon.svg +8 -0
- melage/resource/PngItem_2422924.png +0 -0
- melage/resource/about.png +0 -0
- melage/resource/about_logo.png +0 -0
- melage/resource/about_logo0.png +0 -0
- melage/resource/action_check.png +0 -0
- melage/resource/action_check_OFF.png +0 -0
- melage/resource/arrow).png +0 -0
- melage/resource/arrow.png +0 -0
- melage/resource/arrowFaded.png +0 -0
- melage/resource/arrow_org.png +0 -0
- melage/resource/arrow_org.png.png +0 -0
- melage/resource/arrows.png +0 -0
- melage/resource/authors.mp4 +0 -0
- melage/resource/box.png +0 -0
- melage/resource/check-image-icon-0.jpg +0 -0
- melage/resource/circle.png +0 -0
- melage/resource/circle_faded.png +0 -0
- melage/resource/circle_or.png +0 -0
- melage/resource/close.png +0 -0
- melage/resource/close_bg.png +0 -0
- melage/resource/color/Simple.txt +18 -0
- melage/resource/color/Tissue.txt +24 -0
- melage/resource/color/Tissue12.txt +27 -0
- melage/resource/color/albert_LUT.txt +102 -0
- melage/resource/color/mcrib_LUT.txt +102 -0
- melage/resource/color/pediatric1.txt +29 -0
- melage/resource/color/pediatric1_old.txt +27 -0
- melage/resource/color/pediatric2.txt +87 -0
- melage/resource/color/pediatric3.txt +29 -0
- melage/resource/color/pediatrics (copy).csv +103 -0
- melage/resource/color/tissue_seg.txt +4 -0
- melage/resource/contour.png +0 -0
- melage/resource/contour.svg +2 -0
- melage/resource/contourFaded.png +0 -0
- melage/resource/contourX.png +0 -0
- melage/resource/contourXFaded.png +0 -0
- melage/resource/dti.png +0 -0
- melage/resource/dti0.png +0 -0
- melage/resource/dti222.png +0 -0
- melage/resource/dti_or.png +0 -0
- melage/resource/eco.png +0 -0
- melage/resource/eco22.png +0 -0
- melage/resource/eco_old.png +0 -0
- melage/resource/eco_or.png +0 -0
- melage/resource/eco_or2.png +0 -0
- melage/resource/eco_seg.png +0 -0
- melage/resource/eco_seg_old.png +0 -0
- melage/resource/export.png +0 -0
- melage/resource/hand-grab-icon-10.jpg +0 -0
- melage/resource/hand-grab-icon-25.jpg +0 -0
- melage/resource/info.png +0 -0
- melage/resource/line.png +0 -0
- melage/resource/linefaded.png +0 -0
- melage/resource/load.png +0 -0
- melage/resource/main.ico +0 -0
- melage/resource/manual_images/3D_rightc.png +0 -0
- melage/resource/manual_images/3D_rightc_goto.png +0 -0
- melage/resource/manual_images/3D_rightc_paint.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_draw1.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_draw2.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_render.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_render2.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_render3.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_render4.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_render5.png +0 -0
- melage/resource/manual_images/3D_rightc_paint_render6.png +0 -0
- melage/resource/manual_images/3D_rightc_seg.png +0 -0
- melage/resource/manual_images/exit_toolbar.png +0 -0
- melage/resource/manual_images/load_image_file.png +0 -0
- melage/resource/manual_images/load_image_file_openp.png +0 -0
- melage/resource/manual_images/main_page.png +0 -0
- melage/resource/manual_images/menu_file.png +0 -0
- melage/resource/manual_images/menu_file_export.png +0 -0
- melage/resource/manual_images/menu_file_import.png +0 -0
- melage/resource/manual_images/menu_file_settings.png +0 -0
- melage/resource/manual_images/menu_file_ss.png +0 -0
- melage/resource/manual_images/open_save_load.png +0 -0
- melage/resource/manual_images/panning_toolbar.png +0 -0
- melage/resource/manual_images/segmentation_toolbar.png +0 -0
- melage/resource/manual_images/tab_mri.png +0 -0
- melage/resource/manual_images/tab_us.png +0 -0
- melage/resource/manual_images/tabs.png +0 -0
- melage/resource/manual_images/toolbar_tools.png +0 -0
- melage/resource/manual_images/tools_basic.png +0 -0
- melage/resource/manual_images/tools_bet.png +0 -0
- melage/resource/manual_images/tools_cs.png +0 -0
- melage/resource/manual_images/tools_deepbet.png +0 -0
- melage/resource/manual_images/tools_imageinfo.png +0 -0
- melage/resource/manual_images/tools_maskO.png +0 -0
- melage/resource/manual_images/tools_masking.png +0 -0
- melage/resource/manual_images/tools_n4b.png +0 -0
- melage/resource/manual_images/tools_resize.png +0 -0
- melage/resource/manual_images/tools_ruler.png +0 -0
- melage/resource/manual_images/tools_seg.png +0 -0
- melage/resource/manual_images/tools_threshold.png +0 -0
- melage/resource/manual_images/tools_tools.png +0 -0
- melage/resource/manual_images/widget_color.png +0 -0
- melage/resource/manual_images/widget_color_add.png +0 -0
- melage/resource/manual_images/widget_color_add2.png +0 -0
- melage/resource/manual_images/widget_color_additional.png +0 -0
- melage/resource/manual_images/widget_images.png +0 -0
- melage/resource/manual_images/widget_images2.png +0 -0
- melage/resource/manual_images/widget_images3.png +0 -0
- melage/resource/manual_images/widget_marker.png +0 -0
- melage/resource/manual_images/widget_mri.png +0 -0
- melage/resource/manual_images/widget_mri2.png +0 -0
- melage/resource/manual_images/widget_segintensity.png +0 -0
- melage/resource/manual_images/widget_tab_mutualview.png +0 -0
- melage/resource/manual_images/widget_tab_mutualview2.png +0 -0
- melage/resource/manual_images/widget_table.png +0 -0
- melage/resource/manual_images/widget_table2.png +0 -0
- melage/resource/manual_images/widget_us.png +0 -0
- melage/resource/melage_top.ico +0 -0
- melage/resource/melage_top.png +0 -0
- melage/resource/melage_top0.png +0 -0
- melage/resource/melage_top1.png +0 -0
- melage/resource/melage_top4.png +0 -0
- melage/resource/mri (copy).png +0 -0
- melage/resource/mri.png +0 -0
- melage/resource/mri0.png +0 -0
- melage/resource/mri000.png +0 -0
- melage/resource/mri22.png +0 -0
- melage/resource/mri_big.png +0 -0
- melage/resource/mri_old.png +0 -0
- melage/resource/mri_seg.png +0 -0
- melage/resource/mri_seg_old.png +0 -0
- melage/resource/new.png +0 -0
- melage/resource/open.png +0 -0
- melage/resource/open2.png +0 -0
- melage/resource/pan.png +0 -0
- melage/resource/pencil.png +0 -0
- melage/resource/pencilFaded.png +0 -0
- melage/resource/points.png +0 -0
- melage/resource/pointsFaded.png +0 -0
- melage/resource/rotate.png +0 -0
- melage/resource/ruler.png +0 -0
- melage/resource/rulerFaded.png +0 -0
- melage/resource/s.png +0 -0
- melage/resource/s.psd +0 -0
- melage/resource/save.png +0 -0
- melage/resource/saveas.png +0 -0
- melage/resource/seg_mri.png +0 -0
- melage/resource/seg_mri2.png +0 -0
- melage/resource/settings.png +0 -0
- melage/resource/synch.png +0 -0
- melage/resource/synchFaded.png +0 -0
- melage/resource/theme/rc/.keep +1 -0
- melage/resource/theme/rc/arrow_down.png +0 -0
- melage/resource/theme/rc/arrow_down@2x.png +0 -0
- melage/resource/theme/rc/arrow_down_disabled.png +0 -0
- melage/resource/theme/rc/arrow_down_disabled@2x.png +0 -0
- melage/resource/theme/rc/arrow_down_focus.png +0 -0
- melage/resource/theme/rc/arrow_down_focus@2x.png +0 -0
- melage/resource/theme/rc/arrow_down_pressed.png +0 -0
- melage/resource/theme/rc/arrow_down_pressed@2x.png +0 -0
- melage/resource/theme/rc/arrow_left.png +0 -0
- melage/resource/theme/rc/arrow_left@2x.png +0 -0
- melage/resource/theme/rc/arrow_left_disabled.png +0 -0
- melage/resource/theme/rc/arrow_left_disabled@2x.png +0 -0
- melage/resource/theme/rc/arrow_left_focus.png +0 -0
- melage/resource/theme/rc/arrow_left_focus@2x.png +0 -0
- melage/resource/theme/rc/arrow_left_pressed.png +0 -0
- melage/resource/theme/rc/arrow_left_pressed@2x.png +0 -0
- melage/resource/theme/rc/arrow_right.png +0 -0
- melage/resource/theme/rc/arrow_right@2x.png +0 -0
- melage/resource/theme/rc/arrow_right_disabled.png +0 -0
- melage/resource/theme/rc/arrow_right_disabled@2x.png +0 -0
- melage/resource/theme/rc/arrow_right_focus.png +0 -0
- melage/resource/theme/rc/arrow_right_focus@2x.png +0 -0
- melage/resource/theme/rc/arrow_right_pressed.png +0 -0
- melage/resource/theme/rc/arrow_right_pressed@2x.png +0 -0
- melage/resource/theme/rc/arrow_up.png +0 -0
- melage/resource/theme/rc/arrow_up@2x.png +0 -0
- melage/resource/theme/rc/arrow_up_disabled.png +0 -0
- melage/resource/theme/rc/arrow_up_disabled@2x.png +0 -0
- melage/resource/theme/rc/arrow_up_focus.png +0 -0
- melage/resource/theme/rc/arrow_up_focus@2x.png +0 -0
- melage/resource/theme/rc/arrow_up_pressed.png +0 -0
- melage/resource/theme/rc/arrow_up_pressed@2x.png +0 -0
- melage/resource/theme/rc/base_icon.png +0 -0
- melage/resource/theme/rc/base_icon@2x.png +0 -0
- melage/resource/theme/rc/base_icon_disabled.png +0 -0
- melage/resource/theme/rc/base_icon_disabled@2x.png +0 -0
- melage/resource/theme/rc/base_icon_focus.png +0 -0
- melage/resource/theme/rc/base_icon_focus@2x.png +0 -0
- melage/resource/theme/rc/base_icon_pressed.png +0 -0
- melage/resource/theme/rc/base_icon_pressed@2x.png +0 -0
- melage/resource/theme/rc/branch_closed.png +0 -0
- melage/resource/theme/rc/branch_closed@2x.png +0 -0
- melage/resource/theme/rc/branch_closed_disabled.png +0 -0
- melage/resource/theme/rc/branch_closed_disabled@2x.png +0 -0
- melage/resource/theme/rc/branch_closed_focus.png +0 -0
- melage/resource/theme/rc/branch_closed_focus@2x.png +0 -0
- melage/resource/theme/rc/branch_closed_pressed.png +0 -0
- melage/resource/theme/rc/branch_closed_pressed@2x.png +0 -0
- melage/resource/theme/rc/branch_end.png +0 -0
- melage/resource/theme/rc/branch_end@2x.png +0 -0
- melage/resource/theme/rc/branch_end_disabled.png +0 -0
- melage/resource/theme/rc/branch_end_disabled@2x.png +0 -0
- melage/resource/theme/rc/branch_end_focus.png +0 -0
- melage/resource/theme/rc/branch_end_focus@2x.png +0 -0
- melage/resource/theme/rc/branch_end_pressed.png +0 -0
- melage/resource/theme/rc/branch_end_pressed@2x.png +0 -0
- melage/resource/theme/rc/branch_line.png +0 -0
- melage/resource/theme/rc/branch_line@2x.png +0 -0
- melage/resource/theme/rc/branch_line_disabled.png +0 -0
- melage/resource/theme/rc/branch_line_disabled@2x.png +0 -0
- melage/resource/theme/rc/branch_line_focus.png +0 -0
- melage/resource/theme/rc/branch_line_focus@2x.png +0 -0
- melage/resource/theme/rc/branch_line_pressed.png +0 -0
- melage/resource/theme/rc/branch_line_pressed@2x.png +0 -0
- melage/resource/theme/rc/branch_more.png +0 -0
- melage/resource/theme/rc/branch_more@2x.png +0 -0
- melage/resource/theme/rc/branch_more_disabled.png +0 -0
- melage/resource/theme/rc/branch_more_disabled@2x.png +0 -0
- melage/resource/theme/rc/branch_more_focus.png +0 -0
- melage/resource/theme/rc/branch_more_focus@2x.png +0 -0
- melage/resource/theme/rc/branch_more_pressed.png +0 -0
- melage/resource/theme/rc/branch_more_pressed@2x.png +0 -0
- melage/resource/theme/rc/branch_open.png +0 -0
- melage/resource/theme/rc/branch_open@2x.png +0 -0
- melage/resource/theme/rc/branch_open_disabled.png +0 -0
- melage/resource/theme/rc/branch_open_disabled@2x.png +0 -0
- melage/resource/theme/rc/branch_open_focus.png +0 -0
- melage/resource/theme/rc/branch_open_focus@2x.png +0 -0
- melage/resource/theme/rc/branch_open_pressed.png +0 -0
- melage/resource/theme/rc/branch_open_pressed@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked.png +0 -0
- melage/resource/theme/rc/checkbox_checked0.png +0 -0
- melage/resource/theme/rc/checkbox_checked@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_checked@2x000.png.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked_disabled@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked_focus@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed0.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed@2x.png +0 -0
- melage/resource/theme/rc/checkbox_checked_pressed@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate@2x.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_disabled.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_disabled@2x.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_focus.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_focus@2x.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_pressed.png +0 -0
- melage/resource/theme/rc/checkbox_indeterminate_pressed@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked@2x00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_disabled@2x00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_focus@2x00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed00.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed@2x.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed@2x0.png +0 -0
- melage/resource/theme/rc/checkbox_unchecked_pressed@2x00.png +0 -0
- melage/resource/theme/rc/line_horizontal.png +0 -0
- melage/resource/theme/rc/line_horizontal@2x.png +0 -0
- melage/resource/theme/rc/line_horizontal_disabled.png +0 -0
- melage/resource/theme/rc/line_horizontal_disabled@2x.png +0 -0
- melage/resource/theme/rc/line_horizontal_focus.png +0 -0
- melage/resource/theme/rc/line_horizontal_focus@2x.png +0 -0
- melage/resource/theme/rc/line_horizontal_pressed.png +0 -0
- melage/resource/theme/rc/line_horizontal_pressed@2x.png +0 -0
- melage/resource/theme/rc/line_vertical.png +0 -0
- melage/resource/theme/rc/line_vertical@2x.png +0 -0
- melage/resource/theme/rc/line_vertical_disabled.png +0 -0
- melage/resource/theme/rc/line_vertical_disabled@2x.png +0 -0
- melage/resource/theme/rc/line_vertical_focus.png +0 -0
- melage/resource/theme/rc/line_vertical_focus@2x.png +0 -0
- melage/resource/theme/rc/line_vertical_pressed.png +0 -0
- melage/resource/theme/rc/line_vertical_pressed@2x.png +0 -0
- melage/resource/theme/rc/radio_checked.png +0 -0
- melage/resource/theme/rc/radio_checked@2x.png +0 -0
- melage/resource/theme/rc/radio_checked_disabled.png +0 -0
- melage/resource/theme/rc/radio_checked_disabled@2x.png +0 -0
- melage/resource/theme/rc/radio_checked_focus.png +0 -0
- melage/resource/theme/rc/radio_checked_focus@2x.png +0 -0
- melage/resource/theme/rc/radio_checked_pressed.png +0 -0
- melage/resource/theme/rc/radio_checked_pressed@2x.png +0 -0
- melage/resource/theme/rc/radio_unchecked.png +0 -0
- melage/resource/theme/rc/radio_unchecked@2x.png +0 -0
- melage/resource/theme/rc/radio_unchecked_disabled.png +0 -0
- melage/resource/theme/rc/radio_unchecked_disabled@2x.png +0 -0
- melage/resource/theme/rc/radio_unchecked_focus.png +0 -0
- melage/resource/theme/rc/radio_unchecked_focus@2x.png +0 -0
- melage/resource/theme/rc/radio_unchecked_pressed.png +0 -0
- melage/resource/theme/rc/radio_unchecked_pressed@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal_disabled.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal_disabled@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal_focus.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal_focus@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal_pressed.png +0 -0
- melage/resource/theme/rc/toolbar_move_horizontal_pressed@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical_disabled.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical_disabled@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical_focus.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical_focus@2x.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical_pressed.png +0 -0
- melage/resource/theme/rc/toolbar_move_vertical_pressed@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal_disabled.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal_disabled@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal_focus.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal_focus@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal_pressed.png +0 -0
- melage/resource/theme/rc/toolbar_separator_horizontal_pressed@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical_disabled.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical_disabled@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical_focus.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical_focus@2x.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical_pressed.png +0 -0
- melage/resource/theme/rc/toolbar_separator_vertical_pressed@2x.png +0 -0
- melage/resource/theme/rc/transparent.png +0 -0
- melage/resource/theme/rc/transparent@2x.png +0 -0
- melage/resource/theme/rc/transparent_disabled.png +0 -0
- melage/resource/theme/rc/transparent_disabled@2x.png +0 -0
- melage/resource/theme/rc/transparent_focus.png +0 -0
- melage/resource/theme/rc/transparent_focus@2x.png +0 -0
- melage/resource/theme/rc/transparent_pressed.png +0 -0
- melage/resource/theme/rc/transparent_pressed@2x.png +0 -0
- melage/resource/theme/rc/window_close.png +0 -0
- melage/resource/theme/rc/window_close@2x.png +0 -0
- melage/resource/theme/rc/window_close_disabled.png +0 -0
- melage/resource/theme/rc/window_close_disabled@2x.png +0 -0
- melage/resource/theme/rc/window_close_focus.png +0 -0
- melage/resource/theme/rc/window_close_focus@2x.png +0 -0
- melage/resource/theme/rc/window_close_pressed.png +0 -0
- melage/resource/theme/rc/window_close_pressed@2x.png +0 -0
- melage/resource/theme/rc/window_grip.png +0 -0
- melage/resource/theme/rc/window_grip@2x.png +0 -0
- melage/resource/theme/rc/window_grip_disabled.png +0 -0
- melage/resource/theme/rc/window_grip_disabled@2x.png +0 -0
- melage/resource/theme/rc/window_grip_focus.png +0 -0
- melage/resource/theme/rc/window_grip_focus@2x.png +0 -0
- melage/resource/theme/rc/window_grip_pressed.png +0 -0
- melage/resource/theme/rc/window_grip_pressed@2x.png +0 -0
- melage/resource/theme/rc/window_minimize.png +0 -0
- melage/resource/theme/rc/window_minimize@2x.png +0 -0
- melage/resource/theme/rc/window_minimize_disabled.png +0 -0
- melage/resource/theme/rc/window_minimize_disabled@2x.png +0 -0
- melage/resource/theme/rc/window_minimize_focus.png +0 -0
- melage/resource/theme/rc/window_minimize_focus@2x.png +0 -0
- melage/resource/theme/rc/window_minimize_pressed.png +0 -0
- melage/resource/theme/rc/window_minimize_pressed@2x.png +0 -0
- melage/resource/theme/rc/window_undock.png +0 -0
- melage/resource/theme/rc/window_undock@2x.png +0 -0
- melage/resource/theme/rc/window_undock_disabled.png +0 -0
- melage/resource/theme/rc/window_undock_disabled@2x.png +0 -0
- melage/resource/theme/rc/window_undock_focus.png +0 -0
- melage/resource/theme/rc/window_undock_focus@2x.png +0 -0
- melage/resource/theme/rc/window_undock_pressed.png +0 -0
- melage/resource/theme/rc/window_undock_pressed@2x.png +0 -0
- melage/resource/theme/style.qss +2223 -0
- melage/resource/tract.png +0 -0
- melage/resource/view1.png +0 -0
- melage/resource/view1_eco.png +0 -0
- melage/resource/view1_mri.png +0 -0
- melage/resource/view1_seg.png +0 -0
- melage/resource/view2.png +0 -0
- melage/resource/view2_seg.png +0 -0
- melage/resource/w.png +0 -0
- melage/resource/zoom_in.png +0 -0
- melage/resource/zoom_inFaded.png +0 -0
- melage/resource/zoom_out.png +0 -0
- melage/resource/zoom_outFaded.png +0 -0
- melage/some_notes.txt +3 -0
- melage/utils/DispalyIm.py +2788 -0
- melage/utils/GMM.py +720 -0
- melage/utils/Shaders_120.py +257 -0
- melage/utils/Shaders_330.py +314 -0
- melage/utils/Shaders_bu.py +314 -0
- melage/utils/__init__0.py +7 -0
- melage/utils/brain_extraction_helper.py +234 -0
- melage/utils/custom_QScrollBar.py +61 -0
- melage/utils/glScientific.py +1554 -0
- melage/utils/glScientific_bc.py +1585 -0
- melage/utils/readData.py +1061 -0
- melage/utils/registration.py +512 -0
- melage/utils/source_folder.py +18 -0
- melage/utils/utils.py +3808 -0
- melage/version.txt +1 -0
- melage/widgets/ApplyMask.py +212 -0
- melage/widgets/ChangeSystem.py +152 -0
- melage/widgets/DeepLModels/InfantSegment/Unet.py +464 -0
- melage/widgets/DeepLModels/NPP/dataset/mri_dataset_affine.py +149 -0
- melage/widgets/DeepLModels/NPP/models/checkpoints/npp_v1.pth.py +0 -0
- melage/widgets/DeepLModels/NPP/models/losses.py +146 -0
- melage/widgets/DeepLModels/NPP/models/model.py +272 -0
- melage/widgets/DeepLModels/NPP/models/utils.py +303 -0
- melage/widgets/DeepLModels/NPP/npp.py +116 -0
- melage/widgets/DeepLModels/NPP/requirements.txt +8 -0
- melage/widgets/DeepLModels/NPP/train/train.py +116 -0
- melage/widgets/DeepLModels/Unet3DAtt.py +657 -0
- melage/widgets/DeepLModels/Unet3D_basic.py +648 -0
- melage/widgets/DeepLModels/new_unet.py +652 -0
- melage/widgets/DeepLModels/new_unet_old.py +639 -0
- melage/widgets/DeepLModels/new_unet_old2.py +658 -0
- melage/widgets/HistImage.py +153 -0
- melage/widgets/ImageThresholding.py +222 -0
- melage/widgets/MaskOperations.py +147 -0
- melage/widgets/N4Dialog.py +241 -0
- melage/widgets/Segmentation/FCM.py +1553 -0
- melage/widgets/Segmentation/__init__.py +588 -0
- melage/widgets/Segmentation/utils.py +417 -0
- melage/widgets/SemiAutoSeg.py +666 -0
- melage/widgets/Synthstrip.py +141 -0
- melage/widgets/__init__0.py +5 -0
- melage/widgets/about.py +246 -0
- melage/widgets/activation.py +437 -0
- melage/widgets/activator.py +147 -0
- melage/widgets/be_dl.py +409 -0
- melage/widgets/be_dl_unet3d.py +441 -0
- melage/widgets/brain_extraction.py +855 -0
- melage/widgets/brain_extraction_dl.py +887 -0
- melage/widgets/brain_extraction_dl_bu.py +869 -0
- melage/widgets/colorwidget.py +100 -0
- melage/widgets/dockWidgets.py +2005 -0
- melage/widgets/enhanceImWidget.py +109 -0
- melage/widgets/fileDialog_widget.py +275 -0
- melage/widgets/iminfo.py +346 -0
- melage/widgets/mainwindow_widget.py +6775 -0
- melage/widgets/melageAbout.py +123 -0
- melage/widgets/openglWidgets.py +556 -0
- melage/widgets/registrationWidget.py +342 -0
- melage/widgets/repeat_widget.py +74 -0
- melage/widgets/screenshot_widget.py +138 -0
- melage/widgets/settings_widget.py +77 -0
- melage/widgets/tranformationWidget.py +275 -0
- melage-0.0.65.dist-info/METADATA +742 -0
- melage-0.0.65.dist-info/RECORD +501 -0
- melage-0.0.65.dist-info/WHEEL +5 -0
- melage-0.0.65.dist-info/entry_points.txt +2 -0
- melage-0.0.65.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
__AUTHOR__ = 'Bahram Jafrasteh'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
#vTexCoord=[0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0,1.0]
|
|
7
|
+
#vVertices= [-1.0,-1.0, 1.0,-1.0, 1.0,1.0, -1.0,1.0]
|
|
8
|
+
|
|
9
|
+
#self.coord = [(0, 0), (0, 1), (1, 1), (1, 0)]
|
|
10
|
+
#self.vertex = [(0, 0), (0, self.imHeight), (self.imWidth, self.imHeight), (self.imWidth, 0)]
|
|
11
|
+
|
|
12
|
+
vsrc = """
|
|
13
|
+
#version 120
|
|
14
|
+
|
|
15
|
+
attribute vec2 in_Vertex;
|
|
16
|
+
attribute vec2 vertTexCoord;
|
|
17
|
+
varying vec2 fragTexCoord;
|
|
18
|
+
uniform mat4 g_matModelView;
|
|
19
|
+
|
|
20
|
+
void main(void)
|
|
21
|
+
{
|
|
22
|
+
gl_Position = vec4(in_Vertex, 0.0, 1.0) * g_matModelView;
|
|
23
|
+
fragTexCoord = vertTexCoord;
|
|
24
|
+
}
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
fsrc = """
|
|
29
|
+
#version 120
|
|
30
|
+
|
|
31
|
+
const float PI = 3.14159265359;
|
|
32
|
+
uniform float u_transformSize;
|
|
33
|
+
uniform float u_subtransformSize;
|
|
34
|
+
|
|
35
|
+
uniform sampler2D u_input;
|
|
36
|
+
uniform sampler2D tex;
|
|
37
|
+
uniform float threshold;
|
|
38
|
+
uniform float contrastMult;
|
|
39
|
+
uniform float brightnessAdd;
|
|
40
|
+
uniform vec3 deinterlace;
|
|
41
|
+
uniform vec2 mousePos;
|
|
42
|
+
uniform vec2 iResolution;
|
|
43
|
+
uniform float maxRadius;
|
|
44
|
+
uniform float Ilum;
|
|
45
|
+
|
|
46
|
+
const float fZero= 0.0;
|
|
47
|
+
const float fOne= 1.0;
|
|
48
|
+
const float fTwo= 2.0;
|
|
49
|
+
const float fColScal= 256.0;
|
|
50
|
+
const float Epsilon= 1e-10;
|
|
51
|
+
|
|
52
|
+
varying vec2 fragTexCoord;
|
|
53
|
+
|
|
54
|
+
uniform int sobel;
|
|
55
|
+
uniform float sobel_threshold;
|
|
56
|
+
|
|
57
|
+
vec2 multiplyComplex (vec2 a, vec2 b) {
|
|
58
|
+
return vec2(a[0] * b[0] - a[1] * b[1], a[1] * b[0] + a[0] * b[1]);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
vec4 fft(vec2 vUV, float u_transformSize, float u_subtransformSize){
|
|
62
|
+
float index = vUV.x * u_transformSize - 0.5;
|
|
63
|
+
float evenIndex = floor(index / u_subtransformSize) * (u_subtransformSize * 0.5) + mod(index, u_subtransformSize * 0.5);
|
|
64
|
+
|
|
65
|
+
vec4 even = texture2D(u_input, vec2(evenIndex + 0.5, gl_FragCoord.y) / u_transformSize);
|
|
66
|
+
vec4 odd = texture2D(u_input, vec2(evenIndex + u_transformSize * 0.5 + 0.5, gl_FragCoord.y) / u_transformSize);
|
|
67
|
+
|
|
68
|
+
float twiddleArgument1D = -2.0 * PI * (index / u_subtransformSize);
|
|
69
|
+
vec2 twiddle1D = vec2(cos(twiddleArgument1D), sin(twiddleArgument1D));
|
|
70
|
+
|
|
71
|
+
vec2 outputA = even.xy + multiplyComplex(twiddle1D, odd.xy);
|
|
72
|
+
vec2 outputB = even.zw + multiplyComplex(twiddle1D, odd.zw);
|
|
73
|
+
|
|
74
|
+
return vec4(outputA, outputB);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
vec4 sobel_kernel(sampler2D tex, vec2 coord)
|
|
78
|
+
{
|
|
79
|
+
float w = maxRadius / iResolution.x;
|
|
80
|
+
float h = maxRadius / iResolution.y;
|
|
81
|
+
|
|
82
|
+
vec3 BL = texture2D(tex, coord + vec2(-w, -h)).rgb;
|
|
83
|
+
vec3 BM = texture2D(tex, coord + vec2(0.0, -h)).rgb;
|
|
84
|
+
vec3 BR = texture2D(tex, coord + vec2(w, -h)).rgb;
|
|
85
|
+
vec3 ML = texture2D(tex, coord + vec2(-w, 0.0)).rgb;
|
|
86
|
+
vec3 MM = texture2D(tex, coord).rgb;
|
|
87
|
+
vec3 MR = texture2D(tex, coord + vec2(w, 0.0)).rgb;
|
|
88
|
+
vec3 TL = texture2D(tex, coord + vec2(-w, h)).rgb;
|
|
89
|
+
vec3 TM = texture2D(tex, coord + vec2(0.0, h)).rgb;
|
|
90
|
+
vec3 TR = texture2D(tex, coord + vec2(w, h)).rgb;
|
|
91
|
+
vec3 GradX = -TL + TR - 2.0 * ML + 2.0 * MR - BL + BR;
|
|
92
|
+
vec3 GradY = TL + 2.0 * TM + TR - BL - 2.0 * BM - BR;
|
|
93
|
+
return vec4(length(vec2(GradX.r, GradY.r)), length(vec2(GradX.g, GradY.g)), length(vec2(GradX.b, GradY.b)), 1);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
vec3 RGBtoHSV(in vec3 RGB)
|
|
97
|
+
{
|
|
98
|
+
vec4 P = (RGB.g < RGB.b) ? vec4(RGB.bg, -1.0, 2.0 / 3.0) : vec4(RGB.gb, 0.0, -1.0 / 3.0);
|
|
99
|
+
vec4 Q = (RGB.r < P.x) ? vec4(P.xyw, RGB.r) : vec4(RGB.r, P.yzx);
|
|
100
|
+
float C = Q.x - min(Q.w, Q.y);
|
|
101
|
+
float H = abs((Q.w - Q.y) / (6.0 * C + Epsilon) + Q.z);
|
|
102
|
+
vec3 HCV = vec3(H, C, Q.x);
|
|
103
|
+
float S = HCV.y / (HCV.z + Epsilon);
|
|
104
|
+
return vec3(HCV.x, S, HCV.z);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
vec3 HSVtoRGB(in vec3 HSV)
|
|
108
|
+
{
|
|
109
|
+
float H = HSV.x;
|
|
110
|
+
float R = abs(H * 6.0 - 3.0) - 1.0;
|
|
111
|
+
float G = 2.0 - abs(H * 6.0 - 2.0);
|
|
112
|
+
float B = 2.0 - abs(H * 6.0 - 4.0);
|
|
113
|
+
vec3 RGB = clamp(vec3(R, G, B), 0.0, 1.0);
|
|
114
|
+
return ((RGB - 1.0) * HSV.y + 1.0) * HSV.z;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
mat3 kernel1 = mat3(1.0, 0.0, -1.0,
|
|
118
|
+
2.0, 0.0, 2.0,
|
|
119
|
+
1.0, 0.0, -1.0);
|
|
120
|
+
mat3 kernel2 = mat3(1.0, 2.0, 1.0,
|
|
121
|
+
0.0, 0.0, 0.0,
|
|
122
|
+
-1.0, -2.0, -1.0);
|
|
123
|
+
|
|
124
|
+
float toGrayscale(vec3 source)
|
|
125
|
+
{
|
|
126
|
+
float average = (source.x + source.y + source.z) / 3.0;
|
|
127
|
+
return average;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
float doConvolution(mat3 kernel)
|
|
131
|
+
{
|
|
132
|
+
float sum = 0.0;
|
|
133
|
+
float current_pixelColor = toGrayscale(texture2D(tex, fragTexCoord).xyz);
|
|
134
|
+
float xOffset = 1.0 / 1024.0;
|
|
135
|
+
float yOffset = 1.0 / 768.0;
|
|
136
|
+
float new_pixel00 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x - xOffset, fragTexCoord.y - yOffset)).xyz);
|
|
137
|
+
float new_pixel01 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x, fragTexCoord.y - yOffset)).xyz);
|
|
138
|
+
float new_pixel02 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x + xOffset, fragTexCoord.y - yOffset)).xyz);
|
|
139
|
+
vec3 pixelRow0 = vec3(new_pixel00, new_pixel01, new_pixel02);
|
|
140
|
+
float new_pixel10 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x - xOffset, fragTexCoord.y)).xyz);
|
|
141
|
+
float new_pixel11 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x, fragTexCoord.y)).xyz);
|
|
142
|
+
float new_pixel12 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x + xOffset, fragTexCoord.y)).xyz);
|
|
143
|
+
vec3 pixelRow1 = vec3(new_pixel10, new_pixel11, new_pixel12);
|
|
144
|
+
float new_pixel20 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x - xOffset, fragTexCoord.y + yOffset)).xyz);
|
|
145
|
+
float new_pixel21 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x, fragTexCoord.y + yOffset)).xyz);
|
|
146
|
+
float new_pixel22 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x + xOffset, fragTexCoord.y + yOffset)).xyz);
|
|
147
|
+
vec3 pixelRow2 = vec3(new_pixel20, new_pixel21, new_pixel22);
|
|
148
|
+
vec3 mult1 = (kernel[0] * pixelRow0);
|
|
149
|
+
vec3 mult2 = (kernel[1] * pixelRow1);
|
|
150
|
+
vec3 mult3 = (kernel[2] * pixelRow2);
|
|
151
|
+
sum = mult1.x + mult1.y + mult1.z + mult2.x + mult2.y + mult2.z + mult3.x + mult3.y + mult3.z;
|
|
152
|
+
return sum;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
void main(void)
|
|
156
|
+
{
|
|
157
|
+
int gaussianBlue = 0;
|
|
158
|
+
|
|
159
|
+
if (sobel == 1) //sobel kernel
|
|
160
|
+
{
|
|
161
|
+
vec4 color0 = texture2D(tex, fragTexCoord);
|
|
162
|
+
vec4 bw = vec4(vec3(color0.r, color0.g, color0.b), color0.a);
|
|
163
|
+
vec2 uv = gl_FragCoord.xy / iResolution.xy;
|
|
164
|
+
vec2 mousePosition = mousePos / iResolution.xy;
|
|
165
|
+
float dist = distance(mousePosition, uv);
|
|
166
|
+
float distx = abs(mousePosition.x - uv.x);
|
|
167
|
+
float disty = abs(mousePosition.y - uv.y);
|
|
168
|
+
float mixAmount = clamp((dist - 0.0) / 0.2, 0., 1.);
|
|
169
|
+
|
|
170
|
+
vec4 sobelk = sobel_kernel(tex, fragTexCoord.st);
|
|
171
|
+
|
|
172
|
+
float luminance = dot(vec3(0.114, 0.587, 0.299), color0.rgb);
|
|
173
|
+
|
|
174
|
+
if (luminance < sobel_threshold)
|
|
175
|
+
gl_FragColor = vec4(color0.rgba);
|
|
176
|
+
else
|
|
177
|
+
{
|
|
178
|
+
color0.r += sobelk.r;
|
|
179
|
+
color0.g = sobelk.g;
|
|
180
|
+
color0.b += sobelk.b;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
gl_FragColor = mix(color0, bw, mixAmount);
|
|
184
|
+
|
|
185
|
+
vec4 pixelColor = texture2D(tex, fragTexCoord);
|
|
186
|
+
float horizontalSum = 0.0;
|
|
187
|
+
float verticalSum = 0.0;
|
|
188
|
+
float averageSum = 0.0;
|
|
189
|
+
horizontalSum = doConvolution(kernel1);
|
|
190
|
+
verticalSum = doConvolution(kernel2);
|
|
191
|
+
if ((verticalSum > sobel_threshold) || (horizontalSum > sobel_threshold) || (verticalSum < -sobel_threshold) || (horizontalSum < -sobel_threshold))
|
|
192
|
+
averageSum = pixelColor.x;
|
|
193
|
+
else
|
|
194
|
+
averageSum = 1.0;
|
|
195
|
+
gl_FragColor = vec4(averageSum, averageSum, averageSum, 1.0);
|
|
196
|
+
}
|
|
197
|
+
else
|
|
198
|
+
{
|
|
199
|
+
vec4 pixelColor = texture2D(tex, fragTexCoord);
|
|
200
|
+
|
|
201
|
+
pixelColor.rgb /= pixelColor.a;
|
|
202
|
+
|
|
203
|
+
// first apply brightness
|
|
204
|
+
pixelColor.rgb += brightnessAdd;
|
|
205
|
+
|
|
206
|
+
// then apply contrast
|
|
207
|
+
pixelColor.rgb = ((pixelColor.rgb - 0.5) * max(contrastMult, 0.0)) + 0.5;
|
|
208
|
+
|
|
209
|
+
// Return final pixel color
|
|
210
|
+
pixelColor.rgb *= pixelColor.a;
|
|
211
|
+
|
|
212
|
+
vec3 current_Color;
|
|
213
|
+
|
|
214
|
+
current_Color = vec3(pixelColor.r, pixelColor.g, pixelColor.b);
|
|
215
|
+
|
|
216
|
+
if (threshold > 0)
|
|
217
|
+
{
|
|
218
|
+
float luminance = dot(vec3(0.114, 0.587, 0.299), current_Color);
|
|
219
|
+
if (luminance < threshold)
|
|
220
|
+
gl_FragColor = vec4(1.0);
|
|
221
|
+
else
|
|
222
|
+
gl_FragColor = vec4(0.0);
|
|
223
|
+
}
|
|
224
|
+
else
|
|
225
|
+
{
|
|
226
|
+
gl_FragColor = vec4(current_Color, 1.0);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
"""
|
|
231
|
+
|
|
232
|
+
vsrcPaint = """
|
|
233
|
+
#version 120
|
|
234
|
+
|
|
235
|
+
attribute vec2 in_Vertex;
|
|
236
|
+
uniform mat4 g_matModelView;
|
|
237
|
+
varying vec4 positionGL;
|
|
238
|
+
|
|
239
|
+
void main(void)
|
|
240
|
+
{
|
|
241
|
+
gl_Position = vec4(in_Vertex, 0.0, 1.0)*g_matModelView;
|
|
242
|
+
positionGL = gl_Position;
|
|
243
|
+
gl_PointSize = 200.0;
|
|
244
|
+
}
|
|
245
|
+
"""
|
|
246
|
+
|
|
247
|
+
fsrcPaint = """
|
|
248
|
+
#version 120
|
|
249
|
+
|
|
250
|
+
uniform vec4 my_color;
|
|
251
|
+
varying vec4 positionGL;
|
|
252
|
+
|
|
253
|
+
void main(void)
|
|
254
|
+
{
|
|
255
|
+
gl_FragColor = my_color;
|
|
256
|
+
}
|
|
257
|
+
"""
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
|
|
2
|
+
__AUTHOR__ = 'Bahram Jafrasteh'
|
|
3
|
+
|
|
4
|
+
# vTexCoord=[0.0,0.0, 1.0,0.0, 1.0,1.0, 0.0,1.0]
|
|
5
|
+
# vVertices= [-1.0,-1.0, 1.0,-1.0, 1.0,1.0, -1.0,1.0]
|
|
6
|
+
|
|
7
|
+
# self.coord = [(0, 0), (0, 1), (1, 1), (1, 0)]
|
|
8
|
+
# self.vertex = [(0, 0), (0, self.imHeight), (self.imWidth, self.imHeight), (self.imWidth, 0)]
|
|
9
|
+
|
|
10
|
+
vsrc = """
|
|
11
|
+
#version 330
|
|
12
|
+
in vec2 in_Vertex;
|
|
13
|
+
in vec2 vertTexCoord;
|
|
14
|
+
out vec2 fragTexCoord;
|
|
15
|
+
uniform mat4 g_matModelView;
|
|
16
|
+
void main(void)
|
|
17
|
+
{
|
|
18
|
+
gl_Position = vec4(in_Vertex, 0.0, 1.0)*g_matModelView;
|
|
19
|
+
|
|
20
|
+
fragTexCoord = vertTexCoord;
|
|
21
|
+
}
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
fsrc = """
|
|
25
|
+
#version 330
|
|
26
|
+
#extension GL_ARB_explicit_uniform_location : enable
|
|
27
|
+
#extension GL_ARB_explicit_attrib_location : enable
|
|
28
|
+
|
|
29
|
+
//GPU FFT using a Stockham formulation
|
|
30
|
+
#define HORIZONTAL
|
|
31
|
+
|
|
32
|
+
//precision mediump float;
|
|
33
|
+
|
|
34
|
+
const float PI = 3.14159265359;
|
|
35
|
+
uniform float u_transformSize;
|
|
36
|
+
uniform float u_subtransformSize;
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
uniform sampler2D u_input;
|
|
42
|
+
uniform sampler2D tex;
|
|
43
|
+
uniform float threshold;
|
|
44
|
+
uniform float contrastMult; /* IN: contrast multiplier */
|
|
45
|
+
uniform float brightnessAdd; /* IN: brightness summand */
|
|
46
|
+
uniform vec3 deinterlace; /* IN: de-interlacing information:
|
|
47
|
+
s .. interlacing offset [pixel/texture size]
|
|
48
|
+
t .. texture size [pixel]
|
|
49
|
+
p .. mirror y axis, if 1.0 */
|
|
50
|
+
uniform vec2 mousePos;
|
|
51
|
+
uniform vec2 iResolution;
|
|
52
|
+
uniform float maxRadius;
|
|
53
|
+
uniform float Ilum;
|
|
54
|
+
|
|
55
|
+
const float fZero= 0.0;
|
|
56
|
+
const float fOne= 1.0;
|
|
57
|
+
const float fTwo= 2.0;
|
|
58
|
+
const float fColScal= 256.0;
|
|
59
|
+
const float Epsilon= 1e-10;
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
in vec2 fragTexCoord;
|
|
63
|
+
out vec4 fragColor;
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
uniform int sobel;
|
|
67
|
+
uniform float sobel_threshold;
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
vec2 multiplyComplex (vec2 a, vec2 b) {
|
|
71
|
+
return vec2(a[0] * b[0] - a[1] * b[1], a[1] * b[0] + a[0] * b[1]);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
vec4 fft(vec2 vUV, float u_transformSize, float u_subtransformSize){
|
|
75
|
+
#ifdef HORIZONTAL
|
|
76
|
+
float index = vUV.x * u_transformSize - 0.5;
|
|
77
|
+
#else
|
|
78
|
+
float index = vUV.y * u_transformSize - 0.5;
|
|
79
|
+
#endif
|
|
80
|
+
|
|
81
|
+
float evenIndex = floor(index / u_subtransformSize) * (u_subtransformSize * 0.5) + mod(index, u_subtransformSize * 0.5);
|
|
82
|
+
|
|
83
|
+
//transform two complex sequences simultaneously
|
|
84
|
+
#ifdef HORIZONTAL
|
|
85
|
+
vec4 even = texture2D(u_input, vec2(evenIndex + 0.5, gl_FragCoord.y) / u_transformSize).rgba;
|
|
86
|
+
vec4 odd = texture2D(u_input, vec2(evenIndex + u_transformSize * 0.5 + 0.5, gl_FragCoord.y) / u_transformSize).rgba;
|
|
87
|
+
#else
|
|
88
|
+
vec4 even = texture2D(u_input, vec2(gl_FragCoord.x, evenIndex + 0.5) / u_transformSize).rgba;
|
|
89
|
+
vec4 odd = texture2D(u_input, vec2(gl_FragCoord.x, evenIndex + u_transformSize * 0.5 + 0.5) / u_transformSize).rgba;
|
|
90
|
+
#endif
|
|
91
|
+
|
|
92
|
+
float twiddleArgument1D = -2.0 * PI * (index / u_subtransformSize);
|
|
93
|
+
vec2 twiddle1D = vec2(cos(twiddleArgument1D), sin(twiddleArgument1D));
|
|
94
|
+
|
|
95
|
+
vec2 outputA = even.xy + multiplyComplex(twiddle1D, odd.xy); //even.xy
|
|
96
|
+
vec2 outputB = even.zw + multiplyComplex(twiddle1D, odd.zw); //even.zw
|
|
97
|
+
|
|
98
|
+
//gl_gl_FragColor
|
|
99
|
+
return vec4(outputA,outputB);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
vec4 sobel_kernel(sampler2D tex, vec2 coord)
|
|
103
|
+
{
|
|
104
|
+
float w = maxRadius / iResolution.x;
|
|
105
|
+
float h = maxRadius / iResolution.y;
|
|
106
|
+
|
|
107
|
+
vec3 BL = texture2D(tex, coord + vec2( -w, -h)).rgb;
|
|
108
|
+
vec3 BM = texture2D(tex, coord + vec2(0.0, -h)).rgb;
|
|
109
|
+
vec3 BR = texture2D(tex, coord + vec2( w, -h)).rgb;
|
|
110
|
+
vec3 ML = texture2D(tex, coord + vec2( -w, 0.0)).rgb;
|
|
111
|
+
vec3 MM = texture2D(tex, coord).rgb;
|
|
112
|
+
vec3 MR = texture2D(tex, coord + vec2( w, 0.0)).rgb;
|
|
113
|
+
vec3 TL = texture2D(tex, coord + vec2( -w, h)).rgb;
|
|
114
|
+
vec3 TM = texture2D(tex, coord + vec2(0.0, h)).rgb;
|
|
115
|
+
vec3 TR = texture2D(tex, coord + vec2( w, h)).rgb;
|
|
116
|
+
vec3 GradX = -TL + TR - 2.0 * ML + 2.0 * MR - BL + BR;
|
|
117
|
+
vec3 GradY = TL + 2.0 * TM + TR - BL - 2.0 * BM - BR;
|
|
118
|
+
return vec4 (length(vec2(GradX.r, GradY.r)), length(vec2(GradX.g, GradY.g)), length(vec2(GradX.b, GradY.b)), 1);
|
|
119
|
+
//vec4 sobel_edge_h = n[2] + (2.0*n[5]) + n[8] - (n[0] + (2.0*n[3]) + n[6]);
|
|
120
|
+
//vec4 sobel_edge_v = n[0] + (2.0*n[1]) + n[2] - (n[6] + (2.0*n[7]) + n[8]);
|
|
121
|
+
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
vec3 RGBtoHSV(in vec3 RGB)
|
|
125
|
+
{
|
|
126
|
+
vec4 P = (RGB.g < RGB.b) ? vec4(RGB.bg, -1.0, 2.0/3.0) : vec4(RGB.gb, 0.0, -1.0/3.0);
|
|
127
|
+
vec4 Q = (RGB.r < P.x) ? vec4(P.xyw, RGB.r) : vec4(RGB.r, P.yzx);
|
|
128
|
+
float C = Q.x - min(Q.w, Q.y);
|
|
129
|
+
float H = abs((Q.w - Q.y) / (6.0 * C + Epsilon) + Q.z);
|
|
130
|
+
vec3 HCV = vec3(H, C, Q.x);
|
|
131
|
+
float S = HCV.y / (HCV.z + Epsilon);
|
|
132
|
+
return vec3(HCV.x, S, HCV.z);
|
|
133
|
+
}
|
|
134
|
+
vec3 HSVtoRGB(in vec3 HSV)
|
|
135
|
+
{
|
|
136
|
+
float H = HSV.x;
|
|
137
|
+
float R = abs(H * 6.0 - 3.0) - 1.0;
|
|
138
|
+
float G = 2.0 - abs(H * 6.0 - 2.0);
|
|
139
|
+
float B = 2.0 - abs(H * 6.0 - 4.0);
|
|
140
|
+
vec3 RGB = clamp( vec3(R,G,B), 0.0, 1.0 );
|
|
141
|
+
return ((RGB - 1.0) * HSV.y + 1.0) * HSV.z;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
mat3 kernel1 = mat3 (1.0, 0.0, -1.0,
|
|
145
|
+
2.0, 0.0, 2.0,
|
|
146
|
+
1.0, 0.0, -1.0);
|
|
147
|
+
mat3 kernel2 = mat3 (1.0, 2.0, 1.0,
|
|
148
|
+
0.0, 0.0, 0.0,
|
|
149
|
+
-1.0, -2.0, -1.0);
|
|
150
|
+
|
|
151
|
+
float toGrayscale(vec3 source) {
|
|
152
|
+
float average = (source.x+source.y+source.z)/3.0;
|
|
153
|
+
return average;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
float doConvolution(mat3 kernel) {
|
|
158
|
+
float sum = 0.0;
|
|
159
|
+
float current_pixelColor = toGrayscale(texture2D(tex,fragTexCoord).xyz);
|
|
160
|
+
float xOffset = float(1)/1024.0;
|
|
161
|
+
float yOffset = float(1)/768.0;
|
|
162
|
+
float new_pixel00 = toGrayscale(texture2D(tex, vec2(fragTexCoord.x-xOffset,fragTexCoord.y-yOffset)).xyz);
|
|
163
|
+
float new_pixel01 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x,fragTexCoord.y-yOffset)).xyz);
|
|
164
|
+
float new_pixel02 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x+xOffset,fragTexCoord.y-yOffset)).xyz);
|
|
165
|
+
vec3 pixelRow0 = vec3(new_pixel00,new_pixel01,new_pixel02);
|
|
166
|
+
float new_pixel10 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x-xOffset,fragTexCoord.y)).xyz);
|
|
167
|
+
float new_pixel11 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x,fragTexCoord.y)).xyz);
|
|
168
|
+
float new_pixel12 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x+xOffset,fragTexCoord.y)).xyz);
|
|
169
|
+
vec3 pixelRow1 = vec3(new_pixel10,new_pixel11,new_pixel12);
|
|
170
|
+
float new_pixel20 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x-xOffset,fragTexCoord.y+yOffset)).xyz);
|
|
171
|
+
float new_pixel21 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x,fragTexCoord.y+yOffset)).xyz);
|
|
172
|
+
float new_pixel22 = toGrayscale(texture2D(tex,vec2(fragTexCoord.x+xOffset,fragTexCoord.y+yOffset)).xyz);
|
|
173
|
+
vec3 pixelRow2 = vec3(new_pixel20,new_pixel21,new_pixel22);
|
|
174
|
+
vec3 mult1 = (kernel[0]*pixelRow0);
|
|
175
|
+
vec3 mult2 = (kernel[1]*pixelRow1);
|
|
176
|
+
vec3 mult3 = (kernel[2]*pixelRow2);
|
|
177
|
+
sum= mult1.x+mult1.y+mult1.z+mult2.x+mult2.y+mult2.z+mult3.x+mult3.y+mult3.z;
|
|
178
|
+
return sum;
|
|
179
|
+
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
void main(void)
|
|
184
|
+
{
|
|
185
|
+
int gaussianBlue = 0;
|
|
186
|
+
|
|
187
|
+
if (sobel== 1) //soble kernel
|
|
188
|
+
{
|
|
189
|
+
vec4 color0 = texture2D(tex, fragTexCoord);
|
|
190
|
+
vec4 bw = vec4(vec3(color0.r, color0.g, color0.b), color0.a);
|
|
191
|
+
vec2 uv = gl_FragCoord.xy/iResolution.xy;
|
|
192
|
+
vec2 mousePosition= mousePos/iResolution.xy;
|
|
193
|
+
float dist = distance(mousePosition, uv);
|
|
194
|
+
float distx = abs(mousePosition.x-uv.x);
|
|
195
|
+
float disty = abs(mousePosition.y-uv.y);
|
|
196
|
+
float mixAmount = clamp((dist - 0.0) / 0.2, 0., 1.);
|
|
197
|
+
//color0.r += mixAmount;
|
|
198
|
+
//vec4 mouseColor= texture2D(tex, mousePosition.xy);
|
|
199
|
+
//float distcolor = distance(color0.rgb, mouseColor.rgb);
|
|
200
|
+
//float mixAmountc = clamp((distcolor - 0.0) / (1.0-maxRadius), 0., 1.);
|
|
201
|
+
//color0 = mix(color0, bw, mixAmount);
|
|
202
|
+
//color0 = mix(color0, bw, mixAmountc);
|
|
203
|
+
//color0.r += mixAmountc;
|
|
204
|
+
//float luminanceM = dot (vec3(0.114 ,0.587,0.299 ),mouseColor.rgb);
|
|
205
|
+
|
|
206
|
+
vec4 sobelk = sobel_kernel(tex, fragTexCoord.st);
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
float luminance = dot (vec3(0.114 ,0.587,0.299 ),color0.rgb);
|
|
210
|
+
|
|
211
|
+
if(luminance<sobel_threshold)
|
|
212
|
+
fragColor = vec4(color0.rgba);
|
|
213
|
+
|
|
214
|
+
else
|
|
215
|
+
{
|
|
216
|
+
//if ( (distx < 0.08) && (disty < 0.04))
|
|
217
|
+
// fragColor = vec4(0.0,1,0,1);
|
|
218
|
+
//else
|
|
219
|
+
// fragColor = vec4(color0.rgba);
|
|
220
|
+
color0.r += sobelk.r;
|
|
221
|
+
color0.g = sobelk.g;
|
|
222
|
+
color0.b += sobelk.b;
|
|
223
|
+
|
|
224
|
+
}
|
|
225
|
+
fragColor = mix(color0, bw, mixAmount);
|
|
226
|
+
|
|
227
|
+
vec4 pixelColor = texture2D(tex, fragTexCoord);
|
|
228
|
+
float horizontalSum = 0.0;
|
|
229
|
+
float verticalSum = 0.0;
|
|
230
|
+
float averageSum = 0.0;
|
|
231
|
+
horizontalSum = doConvolution(kernel1);
|
|
232
|
+
verticalSum = doConvolution(kernel2);
|
|
233
|
+
if( (verticalSum > sobel_threshold)|| (horizontalSum >sobel_threshold)||(verticalSum < -sobel_threshold)|| (horizontalSum <-sobel_threshold))
|
|
234
|
+
averageSum = pixelColor.x;
|
|
235
|
+
else
|
|
236
|
+
averageSum = 1.0;
|
|
237
|
+
fragColor = vec4(averageSum,averageSum,averageSum,1.0);
|
|
238
|
+
|
|
239
|
+
}
|
|
240
|
+
else
|
|
241
|
+
{
|
|
242
|
+
vec4 pixelColor = texture2D(tex, fragTexCoord);
|
|
243
|
+
|
|
244
|
+
pixelColor.rgb /= pixelColor.a;
|
|
245
|
+
|
|
246
|
+
// first apply brightness
|
|
247
|
+
pixelColor.rgb += brightnessAdd;
|
|
248
|
+
|
|
249
|
+
// then apply contrast
|
|
250
|
+
pixelColor.rgb = ((pixelColor.rgb - 0.5) * max(contrastMult, 0.0)) + 0.5;
|
|
251
|
+
|
|
252
|
+
// Return final pixel color
|
|
253
|
+
pixelColor.rgb *= pixelColor.a;
|
|
254
|
+
|
|
255
|
+
vec3 current_Color;
|
|
256
|
+
|
|
257
|
+
current_Color = vec3(pixelColor.r, pixelColor.g, pixelColor.b);
|
|
258
|
+
|
|
259
|
+
if (threshold>0)
|
|
260
|
+
{
|
|
261
|
+
float luminance = dot (vec3(0.114 ,0.587,0.299 ),current_Color);
|
|
262
|
+
if(luminance<threshold)
|
|
263
|
+
fragColor = vec4(1.0);
|
|
264
|
+
else
|
|
265
|
+
fragColor = vec4(0.0);
|
|
266
|
+
}
|
|
267
|
+
else
|
|
268
|
+
{
|
|
269
|
+
//vec3 col_hsv = RGBtoHSV(current_Color);
|
|
270
|
+
//uniform float u_saturate;
|
|
271
|
+
//float u_saturate;
|
|
272
|
+
//u_saturate = 10.0;
|
|
273
|
+
//col_hsv.y *= (u_saturate * 2.0);
|
|
274
|
+
//vec3 col_rgb = HSVtoRGB(col_hsv.rgb);
|
|
275
|
+
//fragColor = vec4(col_rgb.rgb, fOne);
|
|
276
|
+
fragColor = vec4(current_Color, fOne);
|
|
277
|
+
|
|
278
|
+
//fragColor = fft(gl_FragCoord.xy, u_transformSize,u_subtransformSize);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
"""
|
|
285
|
+
|
|
286
|
+
vsrcPaint = """
|
|
287
|
+
#version 330
|
|
288
|
+
in vec2 in_Vertex;
|
|
289
|
+
uniform mat4 g_matModelView;
|
|
290
|
+
out vec4 positionGL;
|
|
291
|
+
void main(void)
|
|
292
|
+
{
|
|
293
|
+
|
|
294
|
+
gl_Position = vec4(in_Vertex, 0.0, 1.0)*g_matModelView;
|
|
295
|
+
positionGL = gl_Position;
|
|
296
|
+
gl_PointSize = 200.0;
|
|
297
|
+
}
|
|
298
|
+
"""
|
|
299
|
+
|
|
300
|
+
fsrcPaint = """
|
|
301
|
+
#version 330
|
|
302
|
+
|
|
303
|
+
uniform vec4 my_color;
|
|
304
|
+
out vec4 FragColor;
|
|
305
|
+
in vec4 positionGL;
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
void main(void)
|
|
310
|
+
{
|
|
311
|
+
FragColor = my_color;
|
|
312
|
+
|
|
313
|
+
}
|
|
314
|
+
"""
|