Skip to content

Commit

Permalink
affine cross phase correlation fix
Browse files Browse the repository at this point in the history
  • Loading branch information
iltommi committed Feb 7, 2025
1 parent c603e61 commit fd0f27a
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 37 deletions.
45 changes: 23 additions & 22 deletions plugins/Affine_transformation/Affine_transformation.cc
Original file line number Diff line number Diff line change
Expand Up @@ -154,25 +154,23 @@ void Affine_transformation::affine() {

double minx=0.0;
double miny=0.0;
if (!crop->isChecked()){
std::vector<vec2f> corners(4); //clockwise...
corners[0]=affine(vec2f(0,0),vecForward);
corners[1]=affine(vec2f(my_phys->getW(),0),vecForward);
corners[2]=affine(vec2f(my_phys->getW(),my_phys->getH()),vecForward);
corners[3]=affine(vec2f(0,my_phys->getH()),vecForward);
minx=corners[0].x();
double maxx=corners[0].x();
miny=corners[0].y();
double maxy=corners[0].y();
for (unsigned int i=1;i<4;i++) {
if (minx>corners[i].x()) minx=corners[i].x();
if (maxx<corners[i].x()) maxx=corners[i].x();
if (miny>corners[i].y()) miny=corners[i].y();
if (maxy<corners[i].y()) maxy=corners[i].y();
}
dx=(unsigned int) (maxx-minx);
dy=(unsigned int) (maxy-miny);
std::vector<vec2f> corners(4); //clockwise...
corners[0]=affine(vec2f(0,0),vecForward);
corners[1]=affine(vec2f(my_phys->getW(),0),vecForward);
corners[2]=affine(vec2f(my_phys->getW(),my_phys->getH()),vecForward);
corners[3]=affine(vec2f(0,my_phys->getH()),vecForward);
minx=corners[0].x();
double maxx=corners[0].x();
miny=corners[0].y();
double maxy=corners[0].y();
for (unsigned int i=1;i<4;i++) {
if (minx>corners[i].x()) minx=corners[i].x();
if (maxx<corners[i].x()) maxx=corners[i].x();
if (miny>corners[i].y()) miny=corners[i].y();
if (maxy<corners[i].y()) maxy=corners[i].y();
}
dx=(unsigned int) (maxx-minx);
dy=(unsigned int) (maxy-miny);

DEBUG(affine(vec2f(0,0),vecForward).x() << " " << affine(vec2f(0,0),vecForward).y());
DEBUG(affine(vec2f(0,0),vecBackward).x() << " " << affine(vec2f(0,0),vecBackward).y());
Expand All @@ -189,7 +187,7 @@ void Affine_transformation::affine() {
for (unsigned int i=0; i<dx; i++) {
progress.setValue(i);
for (unsigned int j=0; j<dy; j++) {
affinePhys.set(i,j,my_phys->getPoint(affine(vec2f(i,j)+vec2f(minx,miny),vecBackward),replaceVal));
affinePhys.set(i,j,my_phys->getPoint(affine(vec2f(i,j),vecBackward),replaceVal));
}
}

Expand Down Expand Up @@ -261,28 +259,31 @@ void Affine_transformation::findshift() {
imageFFT.set(i,val/(A.mod()*B.mod()));
}
imageFFTother = imageFFT.ft2(PHYS_BACKWARD);
// nPhysD *magphys=new nPhysD(dx,dy,0.0,"mag");
double max_val = 0.0;
int maxx = 0;
int maxy = 0;
for (int i = 0; i < dy; i++) {
for (int j = 0; j < dx; j++) {
for (int i = 1; i < dy; i++) {
for (int j = 1; j < dx; j++) {
int k=i * dx + j;
double magnitude = imageFFTother.point(k).mcabs();

// magphys->set(j,i,magnitude);
if (magnitude > max_val) {
max_val = magnitude;
maxx = j;
maxy = i;
}
}
}
// magphys->TscanBrightness();
QPolygonF poly;
poly << QPointF(100,0) << QPointF(0,0) << QPointF(0,100);
l1.setPoints(poly);
poly.translate(-maxx,-maxy);
l2.setPoints(poly);
qDebug() << maxx << maxy;
apply();
// nparent->addShowPhys(magphys);

}
qDebug() << "here out";
Expand Down
4 changes: 2 additions & 2 deletions src/graphics/nObject.cc
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ nObject::saveSettings() {
void
nObject::loadSettings(QSettings &settings) {
settings.beginGroup(toolTip());
qDebug() << "herepippo: " << toolTip() << objectName();
qDebug() << "here: " << toolTip() << objectName();
setPos(settings.value("position").toPointF());

int size = settings.beginReadArray("points");
Expand Down Expand Up @@ -769,7 +769,7 @@ nObject::loadSettings(QSettings &settings) {

void
nObject::saveSettings(QSettings &settings) {
qDebug() << "herepippo: " << toolTip() << objectName();
qDebug() << "here: " << toolTip() << objectName();
settings.beginGroup(toolTip());
settings.remove("");
settings.setValue("position",pos());
Expand Down
13 changes: 10 additions & 3 deletions src/nGenericPan.cc
Original file line number Diff line number Diff line change
Expand Up @@ -924,7 +924,10 @@ void nGenericPan::set(QString name, QVariant my_val, int occurrence) {
foreach (nRect *widget, nparent->findChildren<nRect *>()) {
if (widget->parent() == this && widget->toolTip() == name) {
if (my_occurrence==occurrence) {
if (my_val.canConvert(QVariant::RectF)) {
qDebug() << "pippo nrect" << QMetaType::fromName("RectF");
if (my_val.canConvert(QMetaType::fromName("RectF"))) {
qDebug() << "here" << my_val.toRectF();
// if (my_val.canConvert(QVariant::RectF)) {
widget->setRect(my_val.toRectF());
return;
}
Expand All @@ -936,7 +939,9 @@ void nGenericPan::set(QString name, QVariant my_val, int occurrence) {
foreach (nPoint *widget, nparent->findChildren<nPoint *>()) {
if (widget->parent()==this && widget->toolTip() == name) {
if (my_occurrence==occurrence) {
if (my_val.canConvert(QVariant::PointF)) {
qDebug() << "pippo npoint" << QMetaType::fromName("PointF");
if (my_val.canConvert(QMetaType::fromName("PointF"))) {
// if (my_val.canConvert(QVariant::PointF)) {
widget->setPoint(my_val.toPointF());
return;
}
Expand All @@ -948,7 +953,9 @@ void nGenericPan::set(QString name, QVariant my_val, int occurrence) {
foreach (nEllipse *widget, nparent->findChildren<nEllipse *>()) {
if (widget->parent()==this && widget->toolTip() == name) {
if (my_occurrence==occurrence) {
if (my_val.canConvert(QVariant::RectF)) {
qDebug() << "pippo nellipse" << QMetaType::fromName("RectF");
if (my_val.canConvert(QMetaType::fromName("RectF"))) {
// if (my_val.canConvert(QVariant::RectF)) {
widget->setRect(my_val.toRectF());
return;
}
Expand Down
17 changes: 7 additions & 10 deletions src/nPanPlug.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,14 @@ bool nPanPlug::instantiate(neutrino *neu) {
qDebug() << "Instantiate plugin" << name();

const QByteArray className(name()+"*");
const int type = QMetaType::type( className );
qDebug() << className << type;

if(type != QMetaType::UnknownType) {
const QMetaObject *mo = QMetaType::metaObjectForType(type);
if(mo) {
QObject *objectPtr = mo->newInstance(Q_ARG(neutrino*,neu));
if(objectPtr) {
my_pan=qobject_cast<nGenericPan*>(objectPtr);
return true;
}
const QMetaObject *mo = QMetaType::fromName(className).metaObject();

if(mo) {
QObject *objectPtr = mo->newInstance(Q_ARG(neutrino*,neu));
if(objectPtr) {
my_pan=qobject_cast<nGenericPan*>(objectPtr);
return true;
}
}
return false;
Expand Down

0 comments on commit fd0f27a

Please sign in to comment.