Skip to content

Commit d61e3f4

Browse files
authored
Merge pull request #272 from githubdoe/gauss
Fixes ronchi issues caused by gaussianBlur issues
2 parents c20c76e + 243dc9a commit d61e3f4

File tree

5 files changed

+319
-17
lines changed

5 files changed

+319
-17
lines changed

simulationsview.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <QTextDocument>
3636
#include <QtMath>
3737
#include <opencv2/core/core_c.h>
38+
#include "utils.h"
3839
#include <opencv2/core/core.hpp>
3940
#include <opencv2/highgui/highgui.hpp>
4041
#include <opencv2/imgproc/imgproc.hpp>
@@ -211,17 +212,15 @@ cv::Mat SimulationsView::nulledSurface(double defocus){
211212
zernEnables[3] = false;
212213
cv::Mat nulled_surface = zp.null_unwrapped( *(m_Instance->m_wf), newZerns, zernEnables);
213214
zernEnables[3] = saved_defocus_enable;
214-
if (GB_enabled){
215-
double gbValue = settings.value("GBValue", 21).toInt();
216-
int blurRad = 2 *(m_Instance->m_wf)->m_outside.m_radius * gbValue * .01;
217215

216+
if (GB_enabled){
217+
double gbValue = settings.value("GBValue", 21).toInt();
218+
int blurRad = .01 * gbValue * m_wf->m_outside.m_radius * 2;
218219
blurRad &= 0xfffffffe;
219220
++blurRad;
220-
221-
222-
qDebug() << "Blurr" << blurRad;
223-
cv::GaussianBlur( nulled_surface, nulled_surface , cv::Size( blurRad, blurRad ),0,0);
221+
CropGaussianBlur(nulled_surface, nulled_surface, blurRad, m_wf->m_outside, m_wf->m_inside);
224222
}
223+
225224
nulled_surface *= M2PI * md->lambda/outputLambda;
226225
return nulled_surface;
227226
}

surfacemanager.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
#include "oglrendered.h"
7575
#include "ui_oglrendered.h"
7676
#include "astigpolargraph.h"
77-
77+
#include "utils.h"
7878

7979
cv::Mat theMask;
8080
cv::Mat deb;
@@ -359,8 +359,9 @@ void SurfaceManager::generateSurfacefromWavefront(wavefront * wf){
359359
gaussianRad &= 0xfffffffe;
360360

361361
++gaussianRad;
362-
qDebug() << "Blurr" << gaussianRad;
363-
cv::GaussianBlur( wf->nulledData.clone(), wf->workData,
362+
363+
qDebug() << "Blurr" << gaussianRad;
364+
cv::GaussianBlur( wf->nulledData.clone(), wf->workData,
364365
cv::Size( gaussianRad, gaussianRad ),0,0,cv::BORDER_REFLECT);
365366
}
366367
else {
@@ -430,15 +431,22 @@ void SurfaceManager::generateSurfacefromWavefront(wavefront * wf){
430431

431432

432433
if (m_GB_enabled){
433-
expandBorder(wf);
434434
// compute blur radius
435435
int gaussianRad = 2 * wf->m_outside.m_radius * m_gbValue * .01;
436436

437437
gaussianRad &= 0xfffffffe;
438438
++gaussianRad;
439439

440-
cv::GaussianBlur( wf->nulledData.clone(), wf->workData,
441-
cv::Size( gaussianRad, gaussianRad ),0,0,cv::BORDER_REFLECT);
440+
//std::chrono::milliseconds ms = std::chrono::duration_cast< std::chrono::milliseconds >(
441+
// std::chrono::system_clock::now().time_since_epoch());
442+
443+
CropGaussianBlur(wf->nulledData, wf->workData, gaussianRad, wf->m_outside, wf->m_inside);
444+
445+
//std::chrono::milliseconds ms2 = std::chrono::duration_cast< std::chrono::milliseconds >(
446+
// std::chrono::system_clock::now().time_since_epoch());
447+
448+
//int duration = ms2.count() - ms.count();
449+
//spdlog::get("logger")->trace("guassian blur time in ms: {}", duration);
442450
}
443451

444452
wf->nulledData.release();
@@ -1368,7 +1376,7 @@ void SurfaceManager::deleteCurrent(){
13681376

13691377
emit currentNdxChanged(m_currentNdx);
13701378
}
1371-
1379+
/*
13721380
void SurfaceManager::processSmoothing(){
13731381
if (m_wavefronts.size() == 0)
13741382
return;
@@ -1389,7 +1397,7 @@ void SurfaceManager::processSmoothing(){
13891397
}
13901398
13911399
sendSurface(wf);
1392-
}
1400+
}*/
13931401

13941402
void SurfaceManager::next(){
13951403
if (m_wavefronts.size() == 0)
@@ -2440,7 +2448,7 @@ textres SurfaceManager::Phase2(QList<rotationDef *> list, QList<wavefront *> inp
24402448
void SurfaceManager::computeStandAstig(define_input *wizPage, QList<rotationDef *> list){
24412449
// check for pairs
24422450
QVector<rotationDef*> lookat = list.toVector();
2443-
spdlog::get("logger")->trace("computeStandAstig()");
2451+
spdlog::get("logger")->trace("computeStandAstig()");
24442452
while (lookat.size()){
24452453
for (int i = 0; i < lookat.size(); ++i){
24462454
double angle1 = wrapAngle(lookat[i]->angle);

surfacemanager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class SurfaceManager : public QObject
6868
void previous();
6969
void next();
7070
void deleteCurrent();
71-
void processSmoothing();
71+
//void processSmoothing();
7272
void saveAllWaveFrontStats();
7373
void SaveWavefronts(bool saveNulled);
7474
void writeWavefront(const QString &fname, wavefront *wf, bool saveNulled);

0 commit comments

Comments
 (0)