本文整理汇总了Java中mpicbg.spim.data.registration.ViewRegistrations类的典型用法代码示例。如果您正苦于以下问题:Java ViewRegistrations类的具体用法?Java ViewRegistrations怎么用?Java ViewRegistrations使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ViewRegistrations类属于mpicbg.spim.data.registration包,在下文中一共展示了ViewRegistrations类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: FusionResult
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public FusionResult(
final String filepath,
final String filepattern,
final TimePoints timepoints,
final int numSlices,
final double sliceValueMin,
final double sliceValueMax,
final Map< Integer, AffineTransform3D > perTimePointFusionTransforms )
{
final HashMap< Integer, Integer > setupIdToChannelId = new HashMap<>();
setupIdToChannelId.put( 0, 0 );
final ImgLoader fusionLoader = new FusionImageLoader<>( filepath +"/" + filepattern, setupIdToChannelId, numSlices, new FusionImageLoader.Gray32ImagePlusLoader(), sliceValueMin, sliceValueMax );
final int setupId = 0;
final String name = "fused";
final int timepointId = timepoints.getTimePointsOrdered().get( 0 ).getId();
final Dimensions size = fusionLoader.getSetupImgLoader( setupId ).getImageSize( timepointId );
final VoxelDimensions voxelSize = fusionLoader.getSetupImgLoader( setupId ).getVoxelSize( timepointId );
final BasicViewSetup setup = new BasicViewSetup( setupId, name, size, voxelSize );
desc = new SequenceDescriptionMinimal( timepoints, Entity.idMap( Arrays.asList( setup ) ), fusionLoader, null );
final ArrayList< ViewRegistration > registrations = new ArrayList<>();
for ( final TimePoint timepoint : timepoints.getTimePointsOrdered() )
registrations.add( new ViewRegistration( timepoint.getId(), 0, perTimePointFusionTransforms.get( timepoint.getId() ) ) );
regs = new ViewRegistrations( registrations );
}
开发者ID:bigdataviewer,项目名称:bigdataviewer_fiji,代码行数:25,代码来源:FusionResult.java
示例2: setModelToCalibration
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static void setModelToCalibration( final SpimData spimData, final ViewId viewId, final double minResolution )
{
setModelToIdentity( spimData, viewId );
final ViewRegistrations viewRegistrations = spimData.getViewRegistrations();
final ViewRegistration r = viewRegistrations.getViewRegistration( viewId );
final ViewDescription viewDescription = spimData.getSequenceDescription().getViewDescription(
viewId.getTimePointId(), viewId.getViewSetupId() );
VoxelDimensions voxelSize = ViewSetupUtils.getVoxelSizeOrLoad( viewDescription.getViewSetup(), viewDescription.getTimePoint(), spimData.getSequenceDescription().getImgLoader() );
final double calX = voxelSize.dimension( 0 ) / minResolution;
final double calY = voxelSize.dimension( 1 ) / minResolution;
final double calZ = voxelSize.dimension( 2 ) / minResolution;
final AffineTransform3D m = new AffineTransform3D();
m.set( calX, 0.0f, 0.0f, 0.0f,
0.0f, calY, 0.0f, 0.0f,
0.0f, 0.0f, calZ, 0.0f );
final ViewTransform vt = new ViewTransformAffine( "calibration", m );
r.preconcatenateTransform( vt );
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:23,代码来源:Apply_Transformation.java
示例3: numReorientated
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
protected Pair< Integer, Integer > numReorientated()
{
final ViewRegistrations vrs = spimData.getViewRegistrations();
int isReorientated = 0;
int sumViews = 0;
for ( final ViewId viewId : viewIdsToProcess )
{
final ViewDescription vd = spimData.getSequenceDescription().getViewDescription( viewId );
if ( !vd.isPresent() )
continue;
final ViewRegistration vr = vrs.getViewRegistration( viewId );
final ViewTransform vt = vr.getTransformList().get( 0 );
++sumViews;
if ( vt.hasName() && vt.getName().startsWith( reorientationDescription ) )
++isReorientated;
}
return new ValuePair< Integer, Integer >( isReorientated, sumViews );
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:26,代码来源:AutomaticReorientation.java
示例4: createViewRegistrations
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static ViewRegistrations createViewRegistrations()
{
final HashMap< ViewId, ViewRegistration > registrations = new HashMap< ViewId, ViewRegistration >();
registrations.put( new ViewId( 21, 1 ), new ViewRegistration( 21, 1 ) );
final AffineTransform3D t00 = new AffineTransform3D();
t00.set( 1, 0, 0, 1.3, 0, 1, 0, 1.3, 0, 0, 1, 2.3 );
registrations.put( new ViewId( 1, 0 ), new ViewRegistration( 0, 0, t00 ) );
final ArrayList< ViewTransform > list = new ArrayList< ViewTransform >();
list.add( new ViewTransformAffine( null, t00 ) );
list.add( new ViewTransformAffine( "identity", new AffineTransform3D() ) );
registrations.put( new ViewId( 41, 1 ), new ViewRegistration( 41, 1, list ) );
final ViewRegistrations viewRegistrations = new ViewRegistrations( registrations );
return viewRegistrations;
}
开发者ID:bigdataviewer,项目名称:spimdata,代码行数:19,代码来源:SpimDataExample2.java
示例5: filterNonOverlappingPairs
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
/**
*
* @param pairs list of potentially overlapping pairs of view groups, this will be modified!
* @param vrs the view registrations
* @param sd the sequence description
* @param <V> view id type
* @return list of the pairs that were removed
*/
public static <V extends ViewId> List< Pair< Group< V >, Group< V > > > filterNonOverlappingPairs(
List< Pair< Group< V >, Group< V > > > pairs,
final ViewRegistrations vrs,
final AbstractSequenceDescription< ?, ? extends BasicViewDescription< ? >, ? > sd
)
{
final List< Pair< Group< V >, Group< V > > > removedPairs = new ArrayList<>();
for (int i = pairs.size() - 1; i >= 0; i--)
{
final List<Set<V>> pairAsGroups = new ArrayList<>();
pairAsGroups.add( pairs.get( i ).getA().getViews() );
pairAsGroups.add( pairs.get( i ).getB().getViews() );
final BoundingBoxMaximalGroupOverlap< V > ibbd = new BoundingBoxMaximalGroupOverlap< V >(pairAsGroups, sd, vrs);
BoundingBox bb = ibbd.estimate( "max overlap" );
if (bb == null)
{
removedPairs.add( pairs.get( i ) );
pairs.remove( i );
}
}
return removedPairs;
}
开发者ID:PreibischLab,项目名称:BigStitcher,代码行数:38,代码来源:TransformationTools.java
示例6: getCopyWithMissingViews
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static SpimData2 getCopyWithMissingViews(SpimData data, Collection< ? extends ViewId > missingViews, boolean ignoreOldMissingViews)
{
final File basePath = data.getBasePath();
final ViewRegistrations viewRegistrations = data.getViewRegistrations();
final SequenceDescription sdOld = data.getSequenceDescription();
final List<ViewId> missingViewsList = new ArrayList<>( missingViews );
if (!ignoreOldMissingViews && sdOld.getMissingViews() != null )
sdOld.getMissingViews().getMissingViews().forEach( mv -> missingViewsList.add( mv ) );
final SequenceDescription sequenceDescription =
new SequenceDescription(
sdOld.getTimePoints(),
sdOld.getViewSetupsOrdered(),
sdOld.getImgLoader(),
new MissingViews( missingViewsList ) );
final ViewInterestPoints viewsInterestPoints = SpimData2.class.isInstance( data ) ? ((SpimData2)data).getViewInterestPoints() : new ViewInterestPoints();
if (!(SpimData2.class.isInstance( data )))
viewsInterestPoints.createViewInterestPoints( data.getSequenceDescription().getViewDescriptions() );
final BoundingBoxes boundingBoxes = SpimData2.class.isInstance( data ) ? ((SpimData2)data).getBoundingBoxes() : new BoundingBoxes();
final PointSpreadFunctions psfs = SpimData2.class.isInstance( data ) ? ((SpimData2)data).getPointSpreadFunctions() : new PointSpreadFunctions();
final StitchingResults stitchingResults = SpimData2.class.isInstance( data ) ? ((SpimData2)data).getStitchingResults() : new StitchingResults();
final SpimData2 dataNew = new SpimData2( basePath, sequenceDescription, viewRegistrations, viewsInterestPoints, boundingBoxes, psfs, stitchingResults );
return dataNew;
}
开发者ID:PreibischLab,项目名称:BigStitcher,代码行数:31,代码来源:SelectIlluminationPopup.java
示例7: createModel
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
protected Model createModel( final File tgmmFolder, final SpimDataMinimal spimData, final int setupID, final RealInterval interval, final int tFrom, final int tTo )
{
final SequenceDescriptionMinimal seq = spimData.getSequenceDescription();
final ViewRegistrations regs = spimData.getViewRegistrations();
final List< AffineTransform3D > transforms = new ArrayList< AffineTransform3D >( seq.getTimePoints().size() );
for ( final TimePoint t : seq.getTimePoints().getTimePointsOrdered() )
{
transforms.add( regs.getViewRegistration( t.getId(), setupID ).getModel() );
}
final TGMMImporter2 importer = new TGMMImporter2( tgmmFolder, transforms, TGMMImporter2.DEFAULT_PATTERN, logger, interval, tFrom, tTo );
if ( !importer.checkInput() || !importer.process() )
{
logger.error( importer.getErrorMessage() );
}
final Model model = importer.getResult();
/*
* Hack to set the POSITION_T feature of imported spots.
*/
final Settings settings = new Settings();
settings.dt = 1;
final TrackMate trackmate = new TrackMate( model, settings );
final ResetSpotTimeFeatureAction action = new ResetSpotTimeFeatureAction();
action.execute( trackmate );
return model;
}
开发者ID:fiji,项目名称:MaMuT,代码行数:30,代码来源:ImportTGMMAnnotationPlugin_.java
示例8: pickTransform
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
protected List< AffineTransform3D > pickTransform( final SpimDataMinimal spimData, final int setupID )
{
final SequenceDescriptionMinimal seq = spimData.getSequenceDescription();
final ViewRegistrations regs = spimData.getViewRegistrations();
final List< AffineTransform3D > transforms = new ArrayList< AffineTransform3D >( seq.getTimePoints().size() );
for ( final TimePoint t : seq.getTimePoints().getTimePointsOrdered() )
{
transforms.add( regs.getViewRegistration( t.getId(), setupID ).getModel() );
}
return transforms;
}
开发者ID:fiji,项目名称:MaMuT,代码行数:12,代码来源:LoadTGMMAnnotationPlugIn.java
示例9: preConcatenateTransform
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static void preConcatenateTransform( final SpimData spimData, final ViewId viewId, final AffineTransform3D model, final String name )
{
final ViewRegistrations viewRegistrations = spimData.getViewRegistrations();
// update the view registration
final ViewRegistration vr = viewRegistrations.getViewRegistration( viewId );
final ViewTransform vt = new ViewTransformAffine( name, model );
vr.preconcatenateTransform( vt );
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:10,代码来源:Apply_Transformation.java
示例10: assembleRegistrationNames
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static HashMap< String, Integer > assembleRegistrationNames( final SpimData data, final List< ViewId > viewIds )
{
final ViewRegistrations vr = data.getViewRegistrations();
final SequenceDescription sd = data.getSequenceDescription();
final HashMap< String, Integer > names = new HashMap< String, Integer >();
for ( final ViewId viewId: viewIds )
{
final ViewDescription vd = sd.getViewDescription( viewId );
if ( !vd.isPresent() )
continue;
final ViewRegistration r = vr.getViewRegistration( vd );
final String rName = r.getTransformList().get( 0 ).getName();
if ( rName != null )
{
if ( names.containsKey( rName ) )
names.put( rName, names.get( rName ) + 1 );
else
names.put( rName, 1 );
}
}
return names;
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:29,代码来源:GUIHelper.java
示例11: createDataset
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
@Override
public SpimData2 createDataset()
{
// collect all the information
if ( !queryInformation() )
return null;
// assemble timepints, viewsetups, missingviews and the imgloader
final TimePoints timepoints = this.createTimePoints();
final ArrayList< ViewSetup > setups = this.createViewSetups();
final MissingViews missingViews = this.createMissingViews();
// instantiate the sequencedescription
final SequenceDescription sequenceDescription = new SequenceDescription( timepoints, setups, null, missingViews );
final ImgLoader imgLoader = createAndInitImgLoader( ".", new File( directory ), imgFactory, sequenceDescription );
sequenceDescription.setImgLoader( imgLoader );
// get the minimal resolution of all calibrations
final double minResolution = Apply_Transformation.assembleAllMetaData(
sequenceDescription,
sequenceDescription.getViewDescriptions().values() );
IOFunctions.println( "Minimal resolution in all dimensions over all views is: " + minResolution );
IOFunctions.println( "(The smallest resolution in any dimension; the distance between two pixels in the output image will be that wide)" );
// create the initial view registrations (they are all the identity transform)
final ViewRegistrations viewRegistrations = createViewRegistrations( sequenceDescription.getViewDescriptions(), minResolution );
// create the initial view interest point object
final ViewInterestPoints viewInterestPoints = new ViewInterestPoints();
viewInterestPoints.createViewInterestPoints( sequenceDescription.getViewDescriptions() );
// finally create the SpimData itself based on the sequence description and the view registration
final SpimData2 spimData = new SpimData2( new File( directory ), sequenceDescription, viewRegistrations, viewInterestPoints, new BoundingBoxes() );
return spimData;
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:38,代码来源:StackList.java
示例12: createViewRegistrations
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
/**
* Assembles the {@link ViewRegistration} object consisting of a list of {@link ViewRegistration}s for all {@link ViewDescription}s that are present
*
* @param viewDescriptionList
* @param minResolution - the smallest resolution in any dimension (distance between two pixels in the output image will be that wide)
* @return
*/
protected static ViewRegistrations createViewRegistrations( final Map< ViewId, ViewDescription > viewDescriptionList, final double minResolution )
{
final HashMap< ViewId, ViewRegistration > viewRegistrationList = new HashMap< ViewId, ViewRegistration >();
for ( final ViewDescription viewDescription : viewDescriptionList.values() )
if ( viewDescription.isPresent() )
{
final ViewRegistration viewRegistration = new ViewRegistration( viewDescription.getTimePointId(), viewDescription.getViewSetupId() );
final VoxelDimensions voxelSize = viewDescription.getViewSetup().getVoxelSize();
final double calX = voxelSize.dimension( 0 ) / minResolution;
final double calY = voxelSize.dimension( 1 ) / minResolution;
final double calZ = voxelSize.dimension( 2 ) / minResolution;
final AffineTransform3D m = new AffineTransform3D();
m.set( calX, 0.0f, 0.0f, 0.0f,
0.0f, calY, 0.0f, 0.0f,
0.0f, 0.0f, calZ, 0.0f );
final ViewTransform vt = new ViewTransformAffine( "calibration", m );
viewRegistration.preconcatenateTransform( vt );
viewRegistrationList.put( viewRegistration, viewRegistration );
}
return new ViewRegistrations( viewRegistrationList );
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:35,代码来源:StackList.java
示例13: actionPerformed
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
@Override
public void actionPerformed( final ActionEvent e )
{
if ( panel == null )
{
IOFunctions.println( "Panel not set for " + this.getClass().getSimpleName() );
return;
}
//final AbstractSpimData< ? > data = (AbstractSpimData< ? >)panel.getSpimData();
final List< ViewId > viewIds = panel.selectedRowsViewId();
final ViewRegistrations vr = panel.getSpimData().getViewRegistrations();
for ( final ViewId viewId : viewIds )
{
final ViewRegistration v = vr.getViewRegistrations().get( viewId );
if ( index == 0 )
v.getTransformList().remove( 0 );
else
v.getTransformList().remove( v.getTransformList().size() - 1 );
v.updateModel();
}
panel.updateContent();
ViewSetupExplorerPanel.bdvPopup().updateBDV();
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:29,代码来源:RemoveTransformationPopup.java
示例14: RegistrationTableModel
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public RegistrationTableModel( final ViewRegistrations viewRegistrations, final RegistrationExplorerPanel panel )
{
this.columnNames = new ArrayList< String >();
this.panel = panel;
this.columnNames.add( "Transformation Name" );
for ( int row = 0; row < 3; ++row )
for ( int col = 0; col < 4; ++ col )
this.columnNames.add( "m" + row + "" + col );
this.viewRegistrations = viewRegistrations;
this.currentVD = null;
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:14,代码来源:RegistrationTableModel.java
示例15: RegistrationExplorerPanel
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public RegistrationExplorerPanel( final ViewRegistrations viewRegistrations, final RegistrationExplorer< ?, ? > explorer )
{
this.cache = new ArrayList< ViewTransform >();
this.explorer = explorer;
initComponent( viewRegistrations );
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:8,代码来源:RegistrationExplorerPanel.java
示例16: initComponent
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public void initComponent( final ViewRegistrations viewRegistrations )
{
tableModel = new RegistrationTableModel( viewRegistrations, this );
table = new JTable();
table.setModel( tableModel );
table.setSurrendersFocusOnKeystroke( true );
table.setSelectionMode( ListSelectionModel.SINGLE_INTERVAL_SELECTION );
final DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment( JLabel.CENTER );
// center all columns
for ( int column = 0; column < tableModel.getColumnCount(); ++column )
table.getColumnModel().getColumn( column ).setCellRenderer( centerRenderer );
table.setPreferredScrollableViewportSize( new Dimension( 1020, 300 ) );
table.getColumnModel().getColumn( 0 ).setPreferredWidth( 300 );
for ( int i = 1; i < table.getColumnCount(); ++i )
table.getColumnModel().getColumn( i ).setPreferredWidth( 100 );
final Font f = table.getFont();
table.setFont( new Font( f.getName(), f.getStyle(), 11 ) );
this.setLayout( new BorderLayout() );
this.label = new JLabel( "View Description --- " );
this.add( label, BorderLayout.NORTH );
this.add( new JScrollPane( table ), BorderLayout.CENTER );
addPopupMenu( table );
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:32,代码来源:RegistrationExplorerPanel.java
示例17: SpimData2
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public SpimData2(
final File basePath,
final SequenceDescription sequenceDescription,
final ViewRegistrations viewRegistrations,
final ViewInterestPoints viewsInterestPoints,
final BoundingBoxes boundingBoxes )
{
super( basePath, sequenceDescription, viewRegistrations );
this.viewsInterestPoints = viewsInterestPoints;
this.boundingBoxes = boundingBoxes;
}
开发者ID:fiji,项目名称:SPIM_Registration,代码行数:13,代码来源:SpimData2.java
示例18: exampleViewRegistrations
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static void exampleViewRegistrations() throws SpimDataException, IOException
{
final XmlIoViewRegistrations io = new XmlIoViewRegistrations();
final ViewRegistrations registrations = createViewRegistrations();
final Document doc = new Document( io.toXml( registrations ) );
new XMLOutputter( Format.getPrettyFormat() ).output( doc, System.out );
final ViewRegistrations fromXml = io.fromXml( doc.getRootElement() );
new XMLOutputter( Format.getPrettyFormat() ).output( new Document( new XmlIoViewRegistrations().toXml( fromXml ) ), System.out );
}
开发者ID:bigdataviewer,项目名称:spimdata,代码行数:11,代码来源:SpimDataExample2.java
示例19: reCenterViews
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static void reCenterViews(final BigDataViewer viewer, final Collection<BasicViewDescription< ? >> selectedViews, final ViewRegistrations viewRegistrations)
{
AffineTransform3D currentViewerTransform = viewer.getViewer().getDisplay().getTransformEventHandler().getTransform().copy();
final int cX = viewer.getViewer().getWidth() / 2; // size of the display area of the frame
final int cY = viewer.getViewer().getHeight() / 2; // size of the display area of the frame
IOFunctions.println( viewer.getViewer().getWidth() + " " + viewer.getViewer().getHeight() );
final HashMap< BasicViewDescription< ? >, Dimensions > dimensions = new HashMap<>();
final HashMap< BasicViewDescription< ? >, AffineTransform3D > registrations = new HashMap<>();
for ( final BasicViewDescription< ? > view : selectedViews )
{
viewRegistrations.getViewRegistration( view ).updateModel();
registrations.put( view, viewRegistrations.getViewRegistration( view ).getModel() );
dimensions.put( view, view.getViewSetup().getSize() );
}
final BoundingBox bb = new BoundingBoxMaximal( selectedViews, dimensions, registrations ).estimate( "max" );
final double[] com = new double[] {
( bb.max( 0 ) - bb.min( 0 ) )/2 + bb.min( 0 ),
( bb.max( 1 ) - bb.min( 1 ) )/2 + bb.min( 1 ),
( bb.max( 2 ) - bb.min( 2 ) )/2 + bb.min( 2 ) };
final RealInterval bounds = currentViewerTransform.estimateBounds( bb );
IOFunctions.println( TransformTools.printRealInterval( bounds ));
double currentScale = Math.max(
( bounds.realMax( 0 ) - bounds.realMin( 0 ) ) / viewer.getViewer().getWidth(),
( bounds.realMax( 1 ) - bounds.realMin( 1 ) ) / viewer.getViewer().getHeight() );
final Scale3D scale = new Scale3D( 1.0/currentScale, 1.0/currentScale, 1.0/currentScale );
// ignore old translation
currentViewerTransform.set( 0, 0, 3 );
currentViewerTransform.set( 0, 1, 3 );
currentViewerTransform.set( 0, 2, 3 );
currentViewerTransform.preConcatenate( scale );
// to screen units
currentViewerTransform.apply( com, com );
// reset translational part
currentViewerTransform.set( -com[0] + cX , 0, 3 );
currentViewerTransform.set( -com[1] + cY , 1, 3 );
// check if all selected views are 2d
boolean allViews2D = true;
for (final BasicViewDescription< ? > vd : selectedViews)
if (vd.isPresent() && vd.getViewSetup().hasSize() && vd.getViewSetup().getSize().dimension( 2 ) != 1)
{
allViews2D = false;
break;
}
// do not move in z if we have 2d data
if (allViews2D)
currentViewerTransform.set( 0, 2, 3 );
else
currentViewerTransform.set( -com[2], 2, 3 );
viewer.getViewer().setCurrentViewerTransform( currentViewerTransform );
}
开发者ID:PreibischLab,项目名称:BigStitcher,代码行数:65,代码来源:TransformationTools.java
示例20: computeStitchingNonEqualTransformations
import mpicbg.spim.data.registration.ViewRegistrations; //导入依赖的package包/类
public static < T extends RealType< T > > Pair<Pair< AffineGet, Double >, RealInterval> computeStitchingNonEqualTransformations(
final Group<? extends ViewId> viewIdsA,
final Group<? extends ViewId> viewIdsB,
final ViewRegistrations vrs,
final PairwiseStitchingParameters params,
final AbstractSequenceDescription< ?,? extends BasicViewDescription<?>, ? > sd,
final GroupedViewAggregator gva,
final long[] downsampleFactors,
final ExecutorService service )
{
final double[] downsampleDbl = new double[downsampleFactors.length];
for (int d = 0; d < downsampleFactors.length; d++)
downsampleDbl[d] = downsampleFactors[d];
// get Overlap Bounding Box
final List<List<ViewId>> views = new ArrayList<>();
views.add( new ArrayList<>(viewIdsA.getViews()) );
views.add( new ArrayList<>(viewIdsB.getViews()) );
BoundingBoxMaximalGroupOverlap< ViewId > bbDet = new BoundingBoxMaximalGroupOverlap<ViewId>( views, sd, vrs );
BoundingBox bbOverlap = bbDet.estimate( "Max Overlap" );
List<RandomAccessibleInterval< FloatType >> raiOverlaps = new ArrayList<>();
for (List< ViewId > tileViews : views)
{
// wrap every view id (corresponding e.g. to different channels, illums,.. ) in list
List<List< ViewId >> wrapped = tileViews.stream().map( v -> {
ArrayList< ViewId > wrp = new ArrayList<ViewId>();
wrp.add( v );
return wrp;} ).collect( Collectors.toList() );
// open all of them "virtually fused"
List< RandomAccessibleInterval< FloatType > > openFused =
DisplayOverlapTestPopup.openVirtuallyFused( sd, vrs, wrapped, bbOverlap, downsampleDbl );
// aggregate the group into one image
RandomAccessibleInterval< FloatType > raiI = gva.aggregate(
openFused,
tileViews,
sd );
raiOverlaps.add(raiI);
}
// the overlap in both images
final RandomAccessibleInterval< FloatType > img1 = raiOverlaps.get(0);
final RandomAccessibleInterval< FloatType > img2 = raiOverlaps.get(1);
// compute phase correlation shift (passing (0,0,..) translations prevents any overlap correction inside)
final Pair< Translation, Double > result = PairwiseStitching.getShift(
img1,
img2,
new Translation( img1.numDimensions() ),
new Translation( img1.numDimensions() ),
params,
service );
if (result == null)
return null;
for (int i = 0; i< result.getA().numDimensions(); ++i)
result.getA().set( result.getA().get(i, result.getA().numDimensions()) * downsampleFactors[i], i );
// TODO (?): Different translational part of downsample Transformations should be considered via TransformTools.getInitialTransforms
// we probalbly do not have to correct for them ?
final AffineTransform3D vr = vrs.getViewRegistration(viewIdsB.iterator().next()).getModel();
final AffineTransform resCorrected = new AffineTransform( result.getA().numDimensions() );
resCorrected.set( result.getA() );
System.out.println("shift: " + Util.printCoordinates(result.getA().getTranslationCopy()));
System.out.print("cross-corr: " + result.getB());
return new ValuePair<>( new ValuePair<>( resCorrected, result.getB() ), bbOverlap );
}
开发者ID:PreibischLab,项目名称:BigStitcher,代码行数:76,代码来源:TransformationTools.java
注:本文中的mpicbg.spim.data.registration.ViewRegistrations类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论