Add false color rendering
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 947 B |
@@ -274,6 +274,12 @@ void ImageWidget::invert(bool enable)
|
||||
update();
|
||||
}
|
||||
|
||||
void ImageWidget::falseColor(bool enable)
|
||||
{
|
||||
m_falseColor = enable;
|
||||
update();
|
||||
}
|
||||
|
||||
QImage ImageWidget::renderToImage()
|
||||
{
|
||||
if(m_imgWidth < 0)return QImage();
|
||||
@@ -402,6 +408,7 @@ void ImageWidget::paintGL()
|
||||
m_program->setUniformValue("mtf_param", m_low, m_mid, m_high);
|
||||
m_program->setUniformValue("zoom", 1.0f/m_scale);
|
||||
m_program->setUniformValue("bw", m_bwImg && !m_superpixel);
|
||||
m_program->setUniformValue("false_color", m_falseColor && m_bwImg);
|
||||
m_program->setUniformValue("invert", m_invert);
|
||||
if(m_superpixel)m_program->setUniformValue("whiteBalance", m_whiteBalance[0], m_whiteBalance[1], m_whiteBalance[2]);
|
||||
else m_program->setUniformValue("whiteBalance", 1.0f, 1.0f, 1.0f);
|
||||
|
||||
@@ -57,6 +57,7 @@ class ImageWidget : public QOpenGLWidget
|
||||
float m_whiteBalance[3] = {1.0f, 1.0f, 1.0f};
|
||||
bool m_blockRepaint;
|
||||
bool m_bwImg;
|
||||
bool m_falseColor = false;
|
||||
bool m_invert;
|
||||
bool m_superpixel;
|
||||
bool m_showThumbnails;
|
||||
@@ -85,6 +86,7 @@ public slots:
|
||||
void setOffset(float dx, float dy);
|
||||
void superPixel(bool enable);
|
||||
void invert(bool enable);
|
||||
void falseColor(bool enable);
|
||||
QImage renderToImage();
|
||||
void thumbnailLoaded(const Image *image);
|
||||
void showThumbnail(bool enable);
|
||||
|
||||
@@ -84,6 +84,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
|
||||
connect(m_stretchPanel, &StretchToolbar::autoStretch, [&](){ m_stretchPanel->stretchImage(m_ringList->currentImage().get()); });
|
||||
connect(m_stretchPanel, &StretchToolbar::invert, m_imageGL->imageWidget(), &ImageWidget::invert);
|
||||
connect(m_stretchPanel, &StretchToolbar::superPixel, m_imageGL->imageWidget(), &ImageWidget::superPixel);
|
||||
connect(m_stretchPanel, &StretchToolbar::falseColor, m_imageGL->imageWidget(), &ImageWidget::falseColor);
|
||||
|
||||
m_ringList = new ImageRingList(m_database, nameFilter, this);
|
||||
m_filesystem = new FilesystemWidget(m_ringList, this);
|
||||
|
||||
+4
-3
@@ -17,14 +17,15 @@
|
||||
<file>shaders/thumb.vert</file>
|
||||
<file>shaders/debayer.frag</file>
|
||||
<file>shaders/debayer.vert</file>
|
||||
<file>falsecolor.png</file>
|
||||
</qresource>
|
||||
<qresource lang="en" prefix="/">
|
||||
<qresource prefix="/" lang="en">
|
||||
<file alias="help">about/help_en</file>
|
||||
</qresource>
|
||||
<qresource lang="sk" prefix="/">
|
||||
<qresource prefix="/" lang="sk">
|
||||
<file alias="help">about/help_sk</file>
|
||||
</qresource>
|
||||
<qresource lang="fr" prefix="/">
|
||||
<qresource prefix="/" lang="fr">
|
||||
<file alias="help">about/help_fr</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -5,6 +5,7 @@ uniform vec3 mtf_param;
|
||||
uniform bool bw;
|
||||
uniform bool invert;
|
||||
uniform bool srgb;
|
||||
uniform bool false_color;
|
||||
uniform vec3 whiteBalance;
|
||||
in vec2 qt_TexCoord0;
|
||||
layout(location = 0) out vec4 color;
|
||||
@@ -23,6 +24,20 @@ vec4 MTF(vec4 x, vec3 m)
|
||||
return ((m.y - 1) * x) / ((2 * m.y - 1) * x - m.y);
|
||||
}
|
||||
|
||||
vec3 falsecolor(float color)
|
||||
{
|
||||
const vec3 pallete[] = vec3[](
|
||||
vec3(1.0, 0.0, 1.0), //magneta
|
||||
vec3(0.0, 0.0, 1.0), //blue
|
||||
vec3(0.0, 1.0, 1.0), //cyan
|
||||
vec3(0.0, 1.0, 0.0), //green
|
||||
vec3(1.0, 1.0, 0.0), //yellow
|
||||
vec3(1.0, 0.0, 0.0), vec3(1.0, 0.0, 0.0));//red
|
||||
color *= 5.0;
|
||||
int i = int(color);
|
||||
return mix(pallete[i], pallete[i+1], fract(color));
|
||||
}
|
||||
|
||||
vec3 checker()
|
||||
{
|
||||
vec2 pattern = fract(gl_FragCoord.xy * 0.0625) - 0.5;
|
||||
@@ -34,6 +49,7 @@ void main(void)
|
||||
color = texture(qt_Texture0, qt_TexCoord0);
|
||||
if(bw)color = color.rrra;
|
||||
color = MTF(color, mtf_param);
|
||||
if(false_color)color.rgb = falsecolor(color.r);
|
||||
|
||||
if(invert)color.rgb = vec3(1.0) - color.rgb;
|
||||
|
||||
|
||||
@@ -34,6 +34,10 @@ StretchToolbar::StretchToolbar(QWidget *parent) : QToolBar(tr("Stretch toolbar")
|
||||
invertButton->setCheckable(true);
|
||||
connect(invertButton, SIGNAL(toggled(bool)), this, SIGNAL(invert(bool)));
|
||||
|
||||
QAction *falseColorButton = addAction(QIcon(":/falsecolor.png"), tr("False color"));
|
||||
falseColorButton->setCheckable(true);
|
||||
connect(falseColorButton, SIGNAL(toggled(bool)), this, SIGNAL(falseColor(bool)));
|
||||
|
||||
QAction *superPixelButton = addAction(QIcon(":/bayer.png"), tr("Debayer CFA"));
|
||||
superPixelButton->setCheckable(true);
|
||||
connect(superPixelButton, SIGNAL(toggled(bool)), this, SIGNAL(superPixel(bool)));
|
||||
|
||||
@@ -22,6 +22,7 @@ signals:
|
||||
void autoStretch();
|
||||
void invert(bool enable);
|
||||
void superPixel(bool enable);
|
||||
void falseColor(bool enable);
|
||||
};
|
||||
|
||||
#endif // STRETCHTOOLBAR_H
|
||||
|
||||
Reference in New Issue
Block a user