Skip to content
Snippets Groups Projects
Commit d2949bab authored by Manuel Grizonnet's avatar Manuel Grizonnet
Browse files

DOC: add comment about actual limitation of otbQuickLook app with jpeg2000 images

parent 68032e11
No related branches found
No related tags found
No related merge requests found
......@@ -48,7 +48,7 @@ public:
typedef ExtractROIFilterType::OutputImageType OutputImageType;
typedef otb::StreamingShrinkImageFilter
<ExtractROIFilterType::OutputImageType, ExtractROIFilterType::OutputImageType> ShrinkImageFilterType;
private:
void DoInit()
{
......@@ -56,8 +56,9 @@ private:
SetDescription("Generates a subsampled version of an image extract");
SetDocName("Quick Look");
SetDocLongDescription("Generates a subsampled version of an extract of an image defined by ROIStart and ROISize.\n "
"This extract is subsampled using the ratio OR the output image Size");
SetDocLimitations("None");
"This extract is subsampled using the ratio OR the output image Size.");
SetDocLimitations(" This application does not provide yet the optimal way to decode coarser level of resolution from JPEG2000 images (like in Monteverdi).\n"
"Trying to subsampled huge JPEG200 image with the application will lead to poor performances for now.");
SetDocAuthors("OTB-Team");
SetDocSeeAlso(" ");
......@@ -65,10 +66,10 @@ private:
AddParameter(ParameterType_InputImage, "in", "Input Image");
SetParameterDescription( "in", "The image to read" );
AddParameter(ParameterType_OutputImage, "out", "Output Image");
SetParameterDescription( "out" , "The subsampled image" );
AddParameter(ParameterType_ListView, "cl", "Channel List");
SetParameterDescription( "cl" , "Selected channels" );
MandatoryOff("cl");
......@@ -76,52 +77,52 @@ private:
AddParameter(ParameterType_Int, "rox", "ROI Origin X");
SetParameterDescription( "rox" , "first point of ROI in x-direction" );
MandatoryOff("rox");
AddParameter(ParameterType_Int, "roy", "ROI Origin Y");
SetParameterDescription( "roy" , "first point of ROI in y-direction" );
MandatoryOff("roy");
AddParameter(ParameterType_Int, "rsx", "ROI Size X");
SetParameterDescription( "rsx" , "size of ROI in x-direction" );
MandatoryOff("rsx");
AddParameter(ParameterType_Int, "rsy", "ROI Size Y");
SetParameterDescription( "rsy" , "size of ROI in y-direction" );
MandatoryOff("rsy");
AddParameter(ParameterType_Int, "sr", "Sampling ratio");
SetParameterDescription( "sr" , "Sampling Ratio, default is 2" );
SetDefaultParameterInt("sr", 2);
SetMinimumParameterIntValue("sr", 1);
MandatoryOff("sr");
AddParameter(ParameterType_Int, "sx", "Size X");
SetParameterDescription( "sx" , "quicklook size in x-direction (used if no sampling ration is given)" );
MandatoryOff("sx");
DisableParameter("sx");
AddParameter(ParameterType_Int, "sy", "Size Y");
SetParameterDescription( "sy" , "quicklook size in y-direction (used if no sampling ration is given)" );
MandatoryOff("sy");
DisableParameter("sy");
SetDefaultParameterInt("rox", 0);
SetDefaultParameterInt("roy", 0);
SetDefaultParameterInt("rsx", 0);
SetDefaultParameterInt("rsy", 0);
// Doc example parameter settings
SetDocExampleParameterValue("in", "qb_RoadExtract.tif");
SetDocExampleParameterValue("out", "quicklookImage.tif");
}
void DoUpdateParameters()
{
// Update the sizes only if the user does not defined a size
if ( HasValue("in") )
{
InputImageType::Pointer inImage = GetParameterImage("in");
InputImageType::RegionType largestRegion = inImage->GetLargestPossibleRegion();
// Update the values of the channels to be selected
......@@ -143,7 +144,7 @@ private:
SetParameterInt("rsx", largestRegion.GetSize()[0]);
SetParameterInt("rsy", largestRegion.GetSize()[1]);
}
// Put the limit of the index and the size relative the image
SetMinimumParameterIntValue("rsx", 0);
SetMaximumParameterIntValue("rsx", largestRegion.GetSize(0));
......@@ -153,10 +154,10 @@ private:
SetMinimumParameterIntValue("rox", 0);
SetMaximumParameterIntValue("rox", largestRegion.GetSize(0)-1);
SetMinimumParameterIntValue("roy", 0);
SetMaximumParameterIntValue("roy", largestRegion.GetSize(1)-1);
// Crop the roi region to be included in the largest possible
// region
if(!this->CropRegionOfInterest())
......@@ -169,7 +170,7 @@ private:
}
}
bool CropRegionOfInterest()
{
FloatVectorImageType::RegionType region;
......@@ -177,7 +178,7 @@ bool CropRegionOfInterest()
region.SetSize(1, GetParameterInt("rsy"));
region.SetIndex(0, GetParameterInt("rox"));
region.SetIndex(1, GetParameterInt("roy"));
if ( HasValue("in") )
{
if (region.Crop(GetParameterImage("in")->GetLargestPossibleRegion()))
......@@ -191,14 +192,14 @@ bool CropRegionOfInterest()
}
return false;
}
void DoExecute()
{
InputImageType::Pointer inImage = GetParameterImage("in");
m_ExtractROIFilter = ExtractROIFilterType::New();
m_ResamplingFilter = ShrinkImageFilterType::New();
// The image on which the quicklook will be generated
// Will eventually be the m_ExtractROIFilter output
......@@ -211,7 +212,7 @@ bool CropRegionOfInterest()
m_ExtractROIFilter->SetStartY(GetParameterInt("roy"));
m_ExtractROIFilter->SetSizeX(GetParameterInt("rsx"));
m_ExtractROIFilter->SetSizeY(GetParameterInt("rsy"));
if ((GetSelectedItems("cl").size() > 0))
{
for (unsigned int idx = 0; idx < GetSelectedItems("cl").size(); ++idx)
......@@ -259,20 +260,20 @@ bool CropRegionOfInterest()
}
}
}
if ( Ratio < 1)
{
otbAppLogFATAL( << "Error in SizeX and/or SizeY : ratio must be greater than 1.");
return;
}
otbAppLogINFO( << "Ratio used: "<<Ratio << ".");
m_ResamplingFilter->SetShrinkFactor( Ratio );
m_ResamplingFilter->Update();
SetParameterOutputImage("out", m_ResamplingFilter->GetOutput());
}
ExtractROIFilterType::Pointer m_ExtractROIFilter;
ShrinkImageFilterType::Pointer m_ResamplingFilter;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment