* demo.pro: Include new files.
* src/display.cc,
* src/display.hh,
* ui/display.ui: New tab widget.
* src/display_seg.cc,
* src/display_seg.hh: Improve display.
* src/edit_seg.cc,
* src/edit_seg.hh: Improve segmentation editing.
* src/widgets.cc: Include new file.
* ui/main_window.ui: Add a new tab.
---
milena/sandbox/ChangeLog | 20 +++
milena/sandbox/lazzara/igr/gui/demo.pro | 4 +-
.../igr/gui/src/{display_seg.cc => display.cc} | 55 ++-------
.../igr/gui/src/{display_seg.hh => display.hh} | 20 +--
milena/sandbox/lazzara/igr/gui/src/display_seg.cc | 8 +-
milena/sandbox/lazzara/igr/gui/src/display_seg.hh | 3 +-
milena/sandbox/lazzara/igr/gui/src/edit_seg.cc | 128 +++++++++++++------
milena/sandbox/lazzara/igr/gui/src/edit_seg.hh | 17 ++-
milena/sandbox/lazzara/igr/gui/src/widgets.cc | 1 +
milena/sandbox/lazzara/igr/gui/ui/display.ui | 88 ++++++++++++++
milena/sandbox/lazzara/igr/gui/ui/main_window.ui | 21 +++-
scribo/headers.mk | 7 +-
12 files changed, 248 insertions(+), 124 deletions(-)
copy milena/sandbox/lazzara/igr/gui/src/{display_seg.cc => display.cc} (70%)
copy milena/sandbox/lazzara/igr/gui/src/{display_seg.hh => display.hh} (82%)
create mode 100644 milena/sandbox/lazzara/igr/gui/ui/display.ui
diff --git a/milena/sandbox/ChangeLog b/milena/sandbox/ChangeLog
index 94935e2..08e7332 100644
--- a/milena/sandbox/ChangeLog
+++ b/milena/sandbox/ChangeLog
@@ -1,3 +1,23 @@
+2009-10-28 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update IGR's GUI.
+
+ * demo.pro: Include new files.
+
+ * src/display.cc,
+ * src/display.hh,
+ * ui/display.ui: New tab widget.
+
+ * src/display_seg.cc,
+ * src/display_seg.hh: Improve display.
+
+ * src/edit_seg.cc,
+ * src/edit_seg.hh: Improve segmentation editing.
+
+ * src/widgets.cc: Include new file.
+
+ * ui/main_window.ui: Add a new tab.
+
2009-10-28 Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Add the reconstruction on set by union-find canvas.
diff --git a/milena/sandbox/lazzara/igr/gui/demo.pro
b/milena/sandbox/lazzara/igr/gui/demo.pro
index 5d1b3b0..26e1a06 100644
--- a/milena/sandbox/lazzara/igr/gui/demo.pro
+++ b/milena/sandbox/lazzara/igr/gui/demo.pro
@@ -11,6 +11,6 @@ LIBS += -L/lrde/dev/linux-x86/stable/gdcm/lib -lgdcmCommon -lgdcmDICT
-lgdcmDSED
#CONFIG += debug
# Input
-HEADERS += src/main_window.hh src/image_viewer.hh src/display_seg.hh src/edit_seg.hh
src/internal/interactive_scene.hh
-FORMS += ui/main_window.ui ui/image_viewer.ui ui/display_seg.ui ui/edit_seg.ui
+HEADERS += src/main_window.hh src/image_viewer.hh src/display_seg.hh src/edit_seg.hh
src/internal/interactive_scene.hh src/display.hh
+FORMS += ui/main_window.ui ui/image_viewer.ui ui/display_seg.ui ui/edit_seg.ui
ui/display.ui
SOURCES += src/main.cc src/main_window.cc src/image_viewer.cc src/widgets.cc
src/internal/interactive_scene.cc
diff --git a/milena/sandbox/lazzara/igr/gui/src/display_seg.cc
b/milena/sandbox/lazzara/igr/gui/src/display.cc
similarity index 70%
copy from milena/sandbox/lazzara/igr/gui/src/display_seg.cc
copy to milena/sandbox/lazzara/igr/gui/src/display.cc
index eae64a9..050644d 100644
--- a/milena/sandbox/lazzara/igr/gui/src/display_seg.cc
+++ b/milena/sandbox/lazzara/igr/gui/src/display.cc
@@ -28,7 +28,7 @@
#include <QtGui>
# define INCLUDE_MLN_FILES
-#include <src/display_seg.hh>
+#include <src/display.hh>
#include <src/image_viewer.hh>
#include <src/to_qimage.hh>
@@ -61,7 +61,7 @@ namespace mln
namespace demo
{
- display_seg::display_seg(QWidget *parent)
+ display::display(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
@@ -70,14 +70,14 @@ namespace mln
this, SLOT(compute_image(int)));
}
- display_seg::~display_seg()
+ display::~display()
{
}
// Private slots
- void display_seg::on_browseBtn_clicked(bool)
+ void display::on_browseBtn_clicked(bool)
{
QString
filename = QFileDialog::getOpenFileName(this,
@@ -89,39 +89,19 @@ namespace mln
filepath->setText(filename);
}
-
- void display_seg::on_browseSegBtn_clicked(bool)
- {
- QString
- filename = QFileDialog::getOpenFileName(this,
- tr("Open Image."),
- QString(),
- tr("Images (*.dump)"));
-
- if (!filename.isEmpty())
- segfilepath->setText(filename);
- }
-
-
- void display_seg::compute_image(int sli)
+ void display::compute_image(int sli)
{
slice_image<dcm_ima_t> sl_ima = slice(dcm_ima, sli);
- mln_piter_(result_t) p(result.domain());
- for_all(p)
- result(p).lum() = (sl_ima(p) / static_cast<float>(mln_max(value::int_u8))) / 2.0;
-
- QImage ima = to_qimage(data::convert(value::rgb8(), result));
+ QImage ima = to_qimage(data::convert(value::rgb8(), sl_ima));
viewer->update_image(ima);
}
- void display_seg::on_loadBtn_clicked(bool)
+ void display::on_loadBtn_clicked(bool)
{
load_dicom(filepath->text());
- load_seg(segfilepath->text());
- setup_result();
viewer->set_image_layer_count(geom::nslis(dcm_ima));
}
@@ -130,24 +110,7 @@ namespace mln
// Private members
- void display_seg::setup_result()
- {
- initialize(result, seg_ima);
- mln_piter_(result_t) p(result.domain());
- for_all(p)
- {
- result(p).hue() = ((seg_ima(p) * 10) % 359) + 1;
- result(p).sat() = 1;
- }
- }
-
- void display_seg::load_seg(const QString& filename)
- {
- io::dump::load(seg_ima, filename.toStdString());
- }
-
-
- void display_seg::load_dicom(const QString& filename)
+ void display::load_dicom(const QString& filename)
{
image3d<value::int_u12> tmp;
io::dicom::load(tmp, filename.toStdString());
@@ -156,7 +119,7 @@ namespace mln
template <typename I>
- mln_ch_value(I, value::int_u8) display_seg::to_int_u8(const Image<I>&
ima_)
+ mln_ch_value(I, value::int_u8) display::to_int_u8(const Image<I>& ima_)
{
const I& ima = exact(ima_);
mln_precondition(ima.is_valid());
diff --git a/milena/sandbox/lazzara/igr/gui/src/display_seg.hh
b/milena/sandbox/lazzara/igr/gui/src/display.hh
similarity index 82%
copy from milena/sandbox/lazzara/igr/gui/src/display_seg.hh
copy to milena/sandbox/lazzara/igr/gui/src/display.hh
index c559b0d..a329daf 100644
--- a/milena/sandbox/lazzara/igr/gui/src/display_seg.hh
+++ b/milena/sandbox/lazzara/igr/gui/src/display.hh
@@ -23,7 +23,7 @@
// exception does not however invalidate any other reasons why the
// executable file might be covered by the GNU General Public License.
-#ifndef MLN_DEMO_SRC_DISPLAY_SEG_HH
+#ifndef MLN_DEMO_SRC_DISPLAY_HH
# include <QDir>
# include <QTimer>
@@ -31,7 +31,7 @@
# include <QProcess>
# include <QtGui>
# include <QProgressDialog>
-# include <ui_display_seg.h>
+# include <ui_display.h>
# ifndef INCLUDE_MLN_FILES
# define MLN_INCLUDE_ONLY
@@ -50,29 +50,24 @@ namespace mln
namespace demo
{
- class display_seg : public QWidget, private Ui::DisplaySeg
+ class display : public QWidget, private Ui::Display
{
Q_OBJECT
typedef image3d<value::int_u8> dcm_ima_t;
- typedef image2d<value::int_u16> seg_ima_t;
- typedef image2d<value::hsl_f> result_t;
public:
- display_seg(QWidget *parent = 0);
- ~display_seg();
+ display(QWidget *parent = 0);
+ ~display();
private slots:
void on_browseBtn_clicked(bool);
- void on_browseSegBtn_clicked(bool);
void compute_image(int sli);
void on_loadBtn_clicked(bool);
private: // Members
-
void setup_result();
- void load_seg(const QString& filename);
void load_dicom(const QString& filename);
template <typename I>
@@ -82,9 +77,6 @@ namespace mln
private: // Attributes
dcm_ima_t dcm_ima;
- seg_ima_t seg_ima;
- value::int_u8 nlabels_;
- result_t result;
};
@@ -93,4 +85,4 @@ namespace mln
} // end of namespace mln
-#endif // ! MLN_DEMO_SRC_DISPLAY_SEG_HH
+#endif // ! MLN_DEMO_SRC_DISPLAY_HH
diff --git a/milena/sandbox/lazzara/igr/gui/src/display_seg.cc
b/milena/sandbox/lazzara/igr/gui/src/display_seg.cc
index eae64a9..9d36ca2 100644
--- a/milena/sandbox/lazzara/igr/gui/src/display_seg.cc
+++ b/milena/sandbox/lazzara/igr/gui/src/display_seg.cc
@@ -42,7 +42,6 @@
#include <mln/value/hsl.hh>
#include <mln/value/rgb8.hh>
#include <mln/value/int_u12.hh>
-#include <mln/value/int_u8.hh>
#include <mln/value/int_u32.hh>
#include <mln/value/int_u8.hh>
#include <mln/data/convert.hh>
@@ -109,7 +108,7 @@ namespace mln
mln_piter_(result_t) p(result.domain());
for_all(p)
- result(p).lum() = (sl_ima(p) / static_cast<float>(mln_max(value::int_u8))) / 2.0;
+ result(p).lum() = (sl_ima(p) / static_cast<float>(mln_max(value::int_u8))) * 0.7;
QImage ima = to_qimage(data::convert(value::rgb8(), result));
@@ -132,11 +131,12 @@ namespace mln
void display_seg::setup_result()
{
- initialize(result, seg_ima);
+ slice_image<seg_ima_t> sl_ima = slice(seg_ima, 0);
+ initialize(result, sl_ima);
mln_piter_(result_t) p(result.domain());
for_all(p)
{
- result(p).hue() = ((seg_ima(p) * 10) % 359) + 1;
+ result(p).hue() = ((sl_ima(p) * 10) % 359) + 1;
result(p).sat() = 1;
}
}
diff --git a/milena/sandbox/lazzara/igr/gui/src/display_seg.hh
b/milena/sandbox/lazzara/igr/gui/src/display_seg.hh
index c559b0d..45207c0 100644
--- a/milena/sandbox/lazzara/igr/gui/src/display_seg.hh
+++ b/milena/sandbox/lazzara/igr/gui/src/display_seg.hh
@@ -40,7 +40,6 @@
# include <mln/core/image/image3d.hh>
# include <mln/core/image/image2d.hh>
# include <mln/value/int_u8.hh>
-# include <mln/value/int_u16.hh>
# include <mln/value/rgb8.hh>
# include <mln/value/hsl.hh>
@@ -55,7 +54,7 @@ namespace mln
Q_OBJECT
typedef image3d<value::int_u8> dcm_ima_t;
- typedef image2d<value::int_u16> seg_ima_t;
+ typedef image3d<value::int_u8> seg_ima_t;
typedef image2d<value::hsl_f> result_t;
public:
diff --git a/milena/sandbox/lazzara/igr/gui/src/edit_seg.cc
b/milena/sandbox/lazzara/igr/gui/src/edit_seg.cc
index 14e58b5..ef22ba8 100644
--- a/milena/sandbox/lazzara/igr/gui/src/edit_seg.cc
+++ b/milena/sandbox/lazzara/igr/gui/src/edit_seg.cc
@@ -32,12 +32,14 @@
#include <mln/core/image/image3d.hh>
#include <mln/core/image/imorph/labeled_image.hh>
+#include <mln/core/image/dmorph/slice_image.hh>
#include <mln/core/concept/function.hh>
+#include <mln/geom/nslis.hh>
+
#include <mln/data/wrap.hh>
#include <mln/data/transform_inplace.hh>
-#include <mln/value/int_u16.hh>
#include <mln/value/int_u8.hh>
#include <mln/io/ppm/save.hh>
@@ -46,9 +48,12 @@
#include <mln/literal/colors.hh>
#include <mln/labeling/colorize.hh>
+#include <mln/labeling/relabel.hh>
#include <mln/fun/v2v/wrap.hh>
+#include <mln/accu/stat/max.hh>
+
namespace mln
{
@@ -57,23 +62,23 @@ namespace mln
// struct merge_component : Function_v2v<merge_component>
// {
-// typedef value::int_u16 result;
+// typedef value::int_u8 result;
-// merge_component(const value::int_u16& replaced,
-// const value::int_u16& by)
+// merge_component(const value::int_u8& replaced,
+// const value::int_u8& by)
// : replaced_(replaced), by_(by)
// {
// }
-// value::int_u16 operator()(const value::int_u16& v) const
+// value::int_u8 operator()(const value::int_u8& v) const
// {
// if (v == replaced_)
// return by_;
// return v;
// }
-// value::int_u16 replaced_;
-// value::int_u16 by_;
+// value::int_u8 replaced_;
+// value::int_u8 by_;
// };
// } // end of namespace mln::internal
@@ -91,7 +96,7 @@ namespace mln
setupUi(this);
connect(viewer, SIGNAL(slider_valueChanged(int)),
- this, SLOT(compute_image()));
+ this, SLOT(compute_image(int)));
connect(viewer, SIGNAL(mouse_draw_line(const QPointF&, const QPointF&)),
this, SLOT(join_components(const QPointF&, const QPointF&)));
@@ -102,38 +107,60 @@ namespace mln
edit_seg::~edit_seg()
{
-
}
void edit_seg::on_browseBtn_clicked(bool)
{
QString
- filename = QFileDialog::getOpenFileName(this,
+ filename = QFileDialog::getOpenFileName(0,
tr("Open Image."),
QString(),
tr("Images (*.dump)"));
if (!filename.isEmpty())
+ {
filepath->setText(filename);
- // Initial load.
- image2d<value::int_u16> tmp;
- io::dump::load(tmp, filepath->text().toStdString());
- seg_ = labeled_image<image2d<value::int_u16> >(tmp);
+ // Release memory
+ seg_.destroy();
+ seg_rgb8_.destroy();
+
+ io::dump::load(seg_, filepath->text().toStdString());
- selected_.resize(seg_.nlabels(), false);
+ mln_assertion(seg_.is_valid());
- image2d<value::int_u8> tmp2 = data::wrap(value::int_u8(), seg_);
- seg_rgb8_ = data::convert(value::rgb8(), tmp2);
+ nlabels_ = data::compute(accu::meta::stat::max(), seg_);
- viewer->set_image_layer_count(1);
+ fselected_.resize(nlabels_, false);
+ selected_.clear();
+
+ seg_rgb8_ = data::convert(value::rgb8(),
+ data::wrap(value::int_u8(), seg_));
+
+ viewer->set_image_layer_count(geom::nslis(seg_));
+ }
}
- void edit_seg::compute_image()
+ void edit_seg::compute_image(int sli)
{
- QImage ima = to_qimage(seg_rgb8_);
+ current_sli_ = sli;
+
+ slice_image<image3d<value::int_u8> > sl_ima = slice(seg_, sli);
+
+ bboxes_ = labeling::compute(accu::meta::shape::bbox(), sl_ima, nlabels_);
+
+
+ slice_image<image3d<value::rgb8> > sl_ima_rgb = slice(seg_rgb8_, sli);
+ for (unsigned i = 0; i < selected_.nelements(); ++i)
+ if (selected_[i] < bboxes_.nelements()
+ && bboxes_(selected_[i]).is_valid())
+ data::fill(((sl_ima_rgb | bboxes_(selected_[i])).rw()
+ | (pw::value(sl_ima) == pw::cst(selected_[i]))).rw(),
+ literal::red);
+
+ QImage ima = to_qimage(duplicate(sl_ima_rgb));
viewer->update_image(ima);
}
@@ -160,42 +187,61 @@ namespace mln
void edit_seg::on_saveBtn_clicked(bool)
{
QString
- filename = QFileDialog::getOpenFileName(this,
+ filename = QFileDialog::getSaveFileName(this,
tr("Save Image."),
QString(),
tr("Images (*.dump)"));
+ if (!filename.isEmpty())
+ {
+ value::int_u8 new_nlabels;
+ image3d<value::int_u8>
+ out = labeling::relabel(seg_, nlabels_,
+ new_nlabels, fselected_);
- image2d<value::int_u16>
- out = data::transform(seg_.unmorph_(), selected_);
+ io::dump::save(out, filename.toStdString());
+ }
- io::dump::save(out, filename.toStdString());
}
void edit_seg::select_component(const QPointF& p)
{
- point2d
- mln_p = point2d(p.y(), p.x());
+ point3d
+ mln_p(current_sli_, p.y(), p.x());
+
+ slice_image<image3d<value::rgb8> >
+ sl_ima_rgb = slice(seg_rgb8_, current_sli_);
+ slice_image<image3d<value::int_u8> >
+ sl_ima = slice(seg_, current_sli_);
- if (seg_.domain().has(mln_p)
- && !selected_(seg_(mln_p))
- && seg_(mln_p) != 0) // Not the wsl
+ if (seg_.domain().has(mln_p))
{
- selected_(seg_(mln_p)) = true;
- data::fill((seg_rgb8_ | seg_.subdomain(seg_(mln_p))).rw(),
- literal::red);
+ value::int_u8 v = seg_(mln_p);
+
+ if (!fselected_(v) && v != 0) // Not the wsl
+ {
+ fselected_(v) = true;
+ selected_.insert(v);
+ data::fill(((sl_ima_rgb | bboxes_(v)).rw()
+ | (pw::value(sl_ima) == pw::cst(v))).rw(),
+ literal::red);
+ }
+ else
+ {
+ fselected_(v) = false;
+ selected_.remove(v);
+
+// fun::v2v::wrap<value::int_u8> f;
+// value::int_u8 v8 = f(v);
+ value::rgb8 v_rgb(v, v, v);
+ data::fill(((sl_ima_rgb | bboxes_(v)).rw()
+ | (pw::value(sl_ima) == pw::cst(v))).rw(), v_rgb);
+ }
}
- else
- {
- selected_(seg_(mln_p)) = false;
- value::rgb8
- v = convert::to<value::rgb8>(fun::v2v:wrap<value::int_u8>(seg_(mln_p)));
- value::rgb8 v(seg_(mln_p), seg_(mln_p), seg_(mln_p));
- data::fill((seg_rgb8_ | seg_.subdomain(seg_(mln_p))).rw(), v);
- }
- compute_image();
+ saveBtn->setEnabled(selected_.nelements() > 0);
+ compute_image(current_sli_);
}
diff --git a/milena/sandbox/lazzara/igr/gui/src/edit_seg.hh
b/milena/sandbox/lazzara/igr/gui/src/edit_seg.hh
index 0d22db5..708eb2c 100644
--- a/milena/sandbox/lazzara/igr/gui/src/edit_seg.hh
+++ b/milena/sandbox/lazzara/igr/gui/src/edit_seg.hh
@@ -39,9 +39,10 @@
# include <mln/core/image/image2d.hh>
# include <mln/core/image/imorph/labeled_image.hh>
-# include <mln/value/int_u16.hh>
+# include <mln/value/int_u8.hh>
# include <mln/value/rgb8.hh>
# include <mln/util/array.hh>
+# include <mln/util/set.hh>
namespace mln
{
@@ -61,7 +62,7 @@ namespace mln
private slots:
void on_browseBtn_clicked(bool);
void on_saveBtn_clicked(bool);
- void compute_image();
+ void compute_image(int sli);
void join_components(const QPointF& p1, const QPointF& p2);
void select_component(const QPointF& p);
@@ -69,9 +70,15 @@ namespace mln
private: // Attributes
- labeled_image<image2d<value::int_u16> > seg_;
- image2d<value::rgb8> seg_rgb8_;
- mln::util::array<bool> selected_;
+ image3d<value::int_u8> seg_;
+ value::int_u8 nlabels_;
+ image3d<value::rgb8> seg_rgb8_;
+ mln::util::array<box2d> bboxes_;
+
+ mln::util::array<bool> fselected_;
+ mln::util::set<value::int_u8> selected_;
+
+ int current_sli_;
};
diff --git a/milena/sandbox/lazzara/igr/gui/src/widgets.cc
b/milena/sandbox/lazzara/igr/gui/src/widgets.cc
index 5968dc4..0171f61 100644
--- a/milena/sandbox/lazzara/igr/gui/src/widgets.cc
+++ b/milena/sandbox/lazzara/igr/gui/src/widgets.cc
@@ -1,3 +1,4 @@
// FIXME: UGLY!!! Avoir multiple definition of Milena's code.
# include "src/display_seg.cc"
# include "src/edit_seg.cc"
+# include "src/display.cc"
diff --git a/milena/sandbox/lazzara/igr/gui/ui/display.ui
b/milena/sandbox/lazzara/igr/gui/ui/display.ui
new file mode 100644
index 0000000..7766e27
--- /dev/null
+++ b/milena/sandbox/lazzara/igr/gui/ui/display.ui
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Display</class>
+ <widget class="QWidget" name="Display">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Image</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="filepath"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="browseBtn">
+ <property name="text">
+ <string>&Browse</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>48</width>
+ <height>17</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="loadBtn">
+ <property name="text">
+ <string>&Load</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="mln::demo::image_viewer" name="viewer"
native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding"
vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>mln::demo::image_viewer</class>
+ <extends>QWidget</extends>
+ <header>src/image_viewer.hh</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/milena/sandbox/lazzara/igr/gui/ui/main_window.ui
b/milena/sandbox/lazzara/igr/gui/ui/main_window.ui
index 75f3327..bab9d23 100644
--- a/milena/sandbox/lazzara/igr/gui/ui/main_window.ui
+++ b/milena/sandbox/lazzara/igr/gui/ui/main_window.ui
@@ -15,18 +15,23 @@
<widget class="QWidget" name="centralwidget" >
<layout class="QGridLayout" name="gridLayout" >
<item row="0" column="0" >
- <widget class="QTabWidget" name="tabWidget" >
+ <widget class="QTabWidget" name="display" >
<property name="currentIndex" >
<number>0</number>
</property>
- <widget class="mln::demo::display_seg" name="Visualization"
>
+ <widget class="mln::demo::display" name="display" >
<attribute name="title" >
- <string>Visualization</string>
+ <string>Display</string>
</attribute>
</widget>
- <widget class="mln::demo::edit_seg" name="Edition" >
+ <widget class="mln::demo::display_seg" name="displaySeg"
>
<attribute name="title" >
- <string>Edition</string>
+ <string>Display segmentation</string>
+ </attribute>
+ </widget>
+ <widget class="mln::demo::edit_seg" name="editSeg" >
+ <attribute name="title" >
+ <string>Edit segmentation</string>
</attribute>
</widget>
</widget>
@@ -58,6 +63,12 @@
<header>src/edit_seg.hh</header>
<container>1</container>
</customwidget>
+ <customwidget>
+ <class>mln::demo::display</class>
+ <extends>QWidget</extends>
+ <header>src/display.hh</header>
+ <container>1</container>
+ </customwidget>
</customwidgets>
<resources/>
<connections/>
diff --git a/scribo/headers.mk b/scribo/headers.mk
index 6c8d0cf..15d9b2a 100644
--- a/scribo/headers.mk
+++ b/scribo/headers.mk
@@ -24,8 +24,9 @@ nobase_scribo_HEADERS = \
./draw/bounding_boxes.hh \
./estim/object_groups_v_thickness.hh \
./filter/all.hh \
+./filter/common/object_groups_photo.hh \
+./filter/common/object_links_photo.hh \
./filter/common/objects_photo.hh \
-./filter/object_groups_size_ratio.hh \
./filter/object_groups_small.hh \
./filter/object_groups_v_thickness.hh \
./filter/object_links_bbox_h_ratio.hh \
@@ -37,13 +38,10 @@ nobase_scribo_HEADERS = \
./filter/object_links_non_aligned_simple.hh \
./filter/object_links_non_h_aligned.hh \
./filter/object_links_non_v_aligned.hh \
-./filter/objects_h_thin.hh \
./filter/objects_large.hh \
-./filter/objects_size_ratio.hh \
./filter/objects_small.hh \
./filter/objects_thick.hh \
./filter/objects_thin.hh \
-./filter/objects_v_thin.hh \
./fun/v2b/objects_small_filter.hh \
./make/all.hh \
./make/debug_filename.hh \
@@ -82,7 +80,6 @@ nobase_scribo_HEADERS = \
./primitive/internal/find_root.hh \
./primitive/internal/have_link_valid.hh \
./primitive/internal/init_link_array.hh \
-./primitive/internal/is_invalid_link.hh \
./primitive/internal/is_link_valid.hh \
./primitive/internal/update_graph_link.hh \
./primitive/internal/update_link_array.hh \
--
1.5.6.5