Question: Please help, these are my example outputs: Example for gradle run - q - - args = ' input _ files / correctfiles .
Please help, these are my example outputs:
Example for gradle run q argsinputfilescorrectfilestxt:
or
:
or
or
The outputs I get are:
:
:
:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index out of bounds for length
I think theres an issue with my clustering logic, Please help, I have no idea how to get my output calculations correct.
Here is my code that handles the histogram clustering
public List performClustering
if clustersisEmpty
throw new IllegalArgumentExceptionError: No files to cluster.";
while clusterssize K
int closestClusters findClosestClusters;
mergeClustersclosestClusters closestClusters;
return clusters;
private int findClosestClusters
double minDistance Double.MAXVALUE;
int closestIndices ;
for int i ; i clusters.size; i
for int j i ; j clusters.size; j
double distance calculateDistanceclustersgeti clusters.getj;
if distance minDistance
minDistance distance;
closestIndices i;
closestIndices j;
return closestIndices;
public double calculateDistanceImageCluster cluster ImageCluster cluster
if similarityMeasure
return normHistDistancecluster cluster; Use NormHist
else if similarityMeasure
return normHistDistancecluster cluster; Use NormHist
else if similarityMeasure
return invSquareDiffDistancecluster cluster; Use InvSquareDiff
else if similarityMeasure
return normHistDistancecluster cluster;
else
throw new IllegalArgumentExceptionInvalid similarity measure: similarityMeasure Must be or ;
private double normHistDistanceImageCluster cluster ImageCluster cluster
return clustergetHistogramsimilarityclustergetHistogram; Histogram similarity
private double normHistDistanceImageCluster cluster ImageCluster cluster
Divide images into parts and compare histograms
List hists clustergetHistograms;
List hists clustergetHistograms;
double totalSimilarity ;
for int i ; i ; i
totalSimilarity histsgetisimilarityhistsgeti;
return totalSimilarity ; Average similarity
private double invSquareDiffDistanceImageCluster cluster ImageCluster cluster
double pixels clustergetPixelData;
double pixels clustergetPixelData;
double sumSquaredDiff ;
for int x ; x ; x
for int y ; y ; y
double diff pixelsxy pixelsxy;
sumSquaredDiff diff diff;
Check if both images are identical
if sumSquaredDiff
return ; Return for identical images
return Math.sqrtsumSquaredDiff; Return the square root of the summed squared differences
private double normHistDistanceImageCluster cluster ImageCluster cluster
List hists clustergetHistograms;
List hists clustergetHistograms;
double totalSimilarity ;
for int i ; i ; i
totalSimilarity histsgetisimilarityhistsgeti;
return totalSimilarity ;
public void mergeClustersint index int index
ImageCluster cluster clusters.getindex;
ImageCluster cluster clusters.getindex;
Merge images and their histograms
for int i ; i clustergetImageNamessize; i
String imageName clustergetImageNamesgeti;
If there are histograms available, add them; otherwise, just add the image
if i clustergetHistogramssize
Histogram histogramToAdd clustergetHistogramsgeti;
clusteraddImageimageName histogramToAdd;
clusterrecalculateHistogram;
clusters.removeindex;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
