the image content $\rho$ is discretized into a two-dimensional (2D) matrix with its spatial coordinates $x$ and $y$.
+
+
+
the MR signal $s$ is sampled at the $k$-space points ($k_x$, $k_y$), and is an integral over all discrete points ($x$, $y$) in image domain.
+
+
+
the MR signal is sampled is a point-by-point manner, which is an important reason why MRI is slow.
+
+
+
In short, Fourier transform plays an important role in MRI. The exploration of Fourier transform properties has fostered many crucial MRI developments and innovations.
+
Task Optional.1: The equation above shows how a 2D image $\rho(x,y)$ can be formed in MRI. Can this equation be extended to 3D acquisition? In other words, instead of acquiring one 2D plane, can we use MRI to acquire 3D volume such as to cover a whole organ (like the brain)? May you try to write down the equation for the 3D Fourier transform? What may be the difficulties in reconstructing 3D volume images? Think about computational time and organ motion during acquisition.
If we define $k_x \in [-0.3, 0.3]$ with a step size of $0.01$. That is, $k_x = -0.30, -0.29, -0.28, \cdots, 0.30$. To compute $s(k_x)$, we provide the following Java code:
You should be able to get the following plots:
+What happens if you change the scaling factor of the sinc function. For instance, instead of using np.sinc(kx*10), what does the green curve look like if you change $10$ to $1$?
If we have a look at the sinogram values corresponding to one detector position we get some information about the projected object.
+For instance, we can see the profile of the projected circle in the following image.
+
+
However, if we have no access to the original volume slice we can not tell anything about the distance of the object to the detector.
+All the following situations would generate the same projection!
+
+
So apparently, we get some information in the direction of the detector plane, but all information orthogonal to the detector plane
+is lost.
+So one thing that we can do if we want to perform a reconstruction from the sinogram is to take the information in direction of the detector plane
+and uniormly smear it into the direction orthogonal to the detector plane in a range where we assume the object is located.
+We call this process backprojection.
+
+
+
+
+
+
The backprojection smears the value of the projection uniformly over the paths of the rays
+
+
+
Use the following method, that is calculating the value that we want to smear back.
+
// in mt.Projector
+public float backprojectRay(mt.Image sinogramSlice, int angleIdx, float s) {
+ sinogramSlice.setOrigin(0.f, -sinogram.physicalHeight * 0.5f);
+return sinogramSlice.interpolatedAt(angleIdx * sinogram.spacing, s) // * sinogram.spacing is necessary because spacing is not valid for our angle indices (actually each coordinate should have their own spacing. That's the revenge for us being lazy.).
+ / (volume.physicalWidth() * Math.sqrt(2)) // we guess that this is the size of our object, diagonal of our slice
+ / sinogramSlice.width() // we will backproject for each angle. We can take the mean of all angle position that we have here.
+ ;
+ }
+
+
Use this method in backprojectSlice to backproject for each pixel x, y a horizontal line of the sinogram (all possible angles).
+
// in mt.Projector
+public void backprojectSlice(int sliceIdx)
+// A helper method
+public void backprojectSlice(int sliceIdx, int angleIdx)
+
+
To do this
+
+
Create a loop over all angleIdx
+
+
Call the helper method for all angle indices (there are sinogram.width angles)
+
+
+
In public void backprojectSlice(int sliceIdx, int angleIdx)
+
+
Get the slice with index sliceIdx
+
Loop over all x, y of this image
+
Calculate the physical coordinates from the integers x and y (times spacing plus origin!)
+
Calculate the actual angle theta from the angleIdx
+
Calculate s from the physical coordinate.
+
+
s is the physical distance of the point $\vec{x}$ from the ray through the origin at angle theta.
+
Can you write down the line equation for this line?
+
Can you use the line equation to calculate the distance of $\vec{x}$ an the line through the origin?
+
+
+
Call backprojectRay with angleIdx and s
+
Add this result of backprojectRay to current value at position x, y and save the sum at that position
+
+
+
+
+
+
+
Reconstruction
+
Next, we want to try out whether we can use our backprojection to reconstruct a volume.
+Whenever we want to test whether a method works, we need something to compare it with.
+The best possible result, the "true" values, is usally called ground truth.
+We can use one of the reconstructions that we downloaded from the Cancer Imaging Archive as a ground truth volume.
+The best possible result for our reconstruction is to come as close as possible to the original (ground truth) volume.
+
Create a file src/main/java/project/GroundTruthReconstruction.java.
It's important that we never mix up the ground truth with the results of our algorithm.
+Create therefore an instance of Projector that will have the task to simulate projections.
+You can call it groundTruthProjector.
+Open a test volume and create an empty (all pixels 0) sinogram. They are needed to call the constructor of Projector.
+
Call groundTruthProjector.projectSlice with an arbiray slice index.
+
+
Create an empty volume (all pixels 0) with the same dimensions as the ground truth volume and a copy of groundTruthProjector.sinogram().
+You can add the following method to mt.Volume to create copies.
+
// in mt/Volume.java
+public Volume clone(String name) {
+Volume result = new Volume(width(), height(), depth(), name);
+IntStream.range(0, depth()).forEach(z-> result.getSlice(z).setBuffer(Arrays.copyOf(slices[z].buffer(), slices[z].buffer().length)));
+return result;
+ }
+
+
Create a new projector reconstructionProjector with the empty volume and the copy of our sinogram.
+Use backprojectSlice(...) to create your first reconstruction of a slice.
+
A good way to test your implementation is to incremently apply more and more backprojections on your reconstruction.
+When you calculated the sinogram for SLICE_IDX you can use
+
// in project.GroundTruthReconstruction.java
+
+// Choose the slice in the middle. Hopefully showing something interesting.
+final int SLICE_IDX = ????; // < Use a index for which you already calculated `projectSlice`
+
+for (int i = 0; i< projector.numAngles(); i++ ) {
+try {
+TimeUnit.MILLISECONDS.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ projector.backprojectSlice(SLICE_IDX, i);
+ projector.volume().getSlice(SLICE_IDX).show();
+
+//// Optionally save the intermediate results to a file:
+//DisplayUtils.saveImage(projector.volume().getSlice(SLICE_IDX), "/media/dos/shepp_9_"+i+".png");
+}
+
+
This will wait 500ms between each backprojection. Do your rays meet at the right points? Use a simple test image with
+only a single white circle if not. This should help you debug the issue.
+
+
+
+
+
+
+
+
+
+
+
Backprojection using 9 views
+
Backprojection using 100 views
+
+
+
Project Report
+
For the project report, you should briefly describe your backprojection reconstruction algorithm.
+
+
Describe your implementation, create at least one figure supporting your explanations.
+You should never mention implementation details like for-loops or variable names, but important parameters like the number
+of projection angles you used
+
Test your reconstruction algorithm
+
+
using a simple test image like a white circle or square
+
using a CT reconstruction that you downloaded . Cite the data source!
+
+
+
How do images look like? If they are blurry, what is the reason for that.
+Show the images in your project report.
+Mention in one sentence how the Filtered Backprojection algorithm tries to solve that problem.
+
How big are your errors in comparison to the ground truth? If you are using a measure like the Mean Squared Error give
+a formula defining it.
+
+
The content for this section should be about one page long.
We've collected a small checklist for things that you might forget when writing your project work.
+For a detailed description on how to write the report, refer to the exercise slides.
+The project report can be in English or German.
+
To achieve full 10 points for writing style...
+
+
Use the templates we provide to you. Do not modify the style or the formatting. No ornaments for page numbers!
+
Use scientific references to prove your explanantions and to clearly separate your work from the work of others.
+
Do not use more than two references that are websites only. If you have to cite a website use the recommended style from
+the exercise slides.
+
Create a bibliography. Follow the advises from the exercise slides.
+The bibliography must be sorted (either alphabetically when using the Name/Year citation style or
+by the order you use them in the text when numbering the sources).
+Use the same citation style for all your references.
+
Do not use footnotes!
+
Check your spelling: there shouldn't be any obvious spelling errors that can be detected by Word.
+
All symbols in equations should be explained in the text.
+
All equations, figures and tables (tables probably not needed) should be numbered and referenced in the text.
+
All your figures should look professional.
+They should not be blurry or hand-drawn and images should not have a window border of ImageJ.
+They should not overlap with the text.
+
All figures should have captions giving a brief description what the figure shows. The caption should be below the figure.
+
All figures should be full-width, not next text. A figure can contain multiple images next to each other.
+
A list of figures is not needed.
+
Do not use abbreviation without introducing them. The first time you should write computer tomography (CT).
+After that, CT is enough.
+
Label all axes in all plots and coordinate systems!
+
Never use "Ich" or "I". In English texts it's acceptable to use "we" even though you did all the work alone.
+
+
To obtain all the points for the content of your report
+
+
Check whether you have addressed all the questions in the task description.
+
Check for numbers in the questions. Do you really have two advantages and two disadvanges of using computer tomography?
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
ImageJ
+
The image processing program we want to use during this semester is called ImageJ.
+It was developed at the US National Institutes of Health and is used nowadays especially in research
+for medical and biological images.
+
If you want to, you can download a stand-alone version of the program here.
+
Getting started
+
ImageJ can also be used as a Java library.
+We already created a Java project that uses ImageJ.
+You can download it from https://github.com/mt2-erlangen/exercises-ss2021 and import with the IDE of your choice:
You should now be able to execute the file src/main/java/exercises/Exercise01.java
+
+
+
The following code is opening the ImageJ main window and exits the running program when the window is closed.
+
public class Exercise01 {
+public static void main(String[] args) {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+ }
+}
+
+
IntelliJ will only allow to run Exercise01 when there are no errors in the project. You can just out-comment the method lme.Algorithms.convolution1d until you implemented your Signal class.
+
Signal.java
+
4 Points
+
As a first step, we will implement the class Signal
+which should hold a signal of finite length.
+Create the file src/main/java/mt/Signal.java.
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+import lme.DisplayUtils;
+import ij.gui.Plot;
+
+public class Signal {
+
+}
+
+
Signal should have the following members
+
protected float[] buffer; // Array to store signal values
+protected String name; // Name of the signal
+protected int minIndex; // Index of first array element (should be 0 for signals)
+
+
Implement two constructors for Signal
+
public Signal(int length, String name) // Create signal with a certain length (set values later)
+public Signal(float[] buffer, String name) // Create a signal from a provided array
+
+
Implement the following getter methods for Signal
+
public int size() // Size of the signal
+public float[] buffer() // Get the internal array
+public int minIndex() // Get lowest index of signal (that is stored in buffer)
+public int maxIndex() // Get highest index of signal (that is stored in buffer)
+public String name() // Get the name of the signal
+
+
Next, we want to visualize our Signal in the method show. You can use provided function lme.DisplayUtils.showArray.
+To test it, create a Signal with arbitray values in the main method of Exercise01 and call its show method.
+
public void show() {
+DisplayUtils.showArray(this.buffer, this.name, /*start index=*/0, /*distance between values=*/1);
+ }
+
+
In our black board exercises, we agreed that we want to continue our signals with zeros where we don't have any values stored.
+If we access indices of our Signal with values smaller than minIndex() or larger maxIndex() we want to return 0.0f.
+If a user accesses an index between minIndex() and maxIndex() we want to return the corresponding value stored in our array.
+
+
Implement the method atIndex and setAtIndex. Please be aware that minIndex can be smaller than 0 for subclasses of Signal.
+If setAtIndex is called with an invalid index (smaller than minIndex or greater than maxIndex), it's ok for the program to crash.
+This should not happen for atIndex.
+
public float atIndex(int i)
+public void setAtIndex(int i, float value)
+
+
You can check the correctness of atIndex/setAtIndex with the test testAtIndex in file src/test/java/SignalTests.java.
+
LinearFilter.java
+
3 Points
+
Implement LinearFilter in file src/main/java/LinearFilter.java as a subclass of Signal.
+LinearFilter should work like Signal except its minIndex should be at - floor(coefficients.length/2) as in the exercise slides.
+
+
LinearFilter should have a constructor that checks that coefficients is an array of odd size or throws an error otherwise (any error is ok).
+
public LinearFilter(float[] coefficients, String name)
+
+
and a method that executes the discrete convolution on another Signal input and returns an output of same size.
+
public Signal apply(Signal input);
+
+
You should be able to directly use the formula from the exercise slides (f is the input signal, h our filter, $L$ the filter length)
or with our minIndex/maxIndex methods for each index $k$ of the output signal.
+$$g[k] = \sum_{\kappa=h.\text{minIndex}}^{h.\text{maxIndex}} f[k-\kappa] \cdot h[\kappa] $$
+
Be sure that you use atIndex to access the values of input and the filter.
+
+
You can test your convolution function with the tests provided in src/test/java/LinearFilterTests.java.
+
Good test cases are:
+
+
{0,0,1,0,0}: this filter should not change your signal at all
+
{0,1,0,0,0}: this filter should move your signal one value to the left
+
{0,0,0,1,0}: this filter should move your signal one value to the right
+
+
Questions
+
3 Points
+
In this task we want to convolve a test Signal with three different linear filters.
+Filter the signal $f[k]$ Signal(new float[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, "f(k)")
+with filters
+
+
$h_1[k]$: {1.0f/3 ,1/3.f ,1/3.f},
+
$h_2[k]$: {1/5.f, 1/5.f , 1/5.f, 1/5.f, 1/5.f},
+
$h_3[k]$: {0.5f, 0, -0.5f}.
+
+
Save the images of the input signal and filtered results (recommended filetype: png).
+Create a PDF document (e.g. with Word or LibreOffice) with those images in which you describe briefly how the filters modified the input signal and why.
+
Submitting
+
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Then, compress your source code folder src to a zip archive (src.zip) and submit it and your PDF document via StudOn!
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Statistical Measures
+
In this exercise, we want to have a look on how we can analyze signals using simple statistical measures.
+We will use a freely available ECG data set with the goal to distinguish healthy from patients with heart rythm problems.
+
+
You can find the original data set here
+but we recommend to use a post-processed version available on studOn.
+
Gradle Build System
+
In Medizintechnik II we use the build system Gradle.
+Gradle is especially popular for Android projects since it's easy to add new software dependencies that will be automatically
+downloaded.
+
In our case, the published data set is saved as Matlab *.mat files.
+To read those files, an external dependency was already added to our build.gradle file.
does the magic and automatically downloaded a *.mat file reader.
+In case, you need to add external software to your own projects you can use this search engine.
+
Tasks
+
Loading one of File of the Data Set
+
Load the file src/main/java/exercises/Exercise02.java (available here (Click the raw button)) into your existing project.
+It alread contain some code for parsing the program parameters:
+
public static void main(String[] args) throws IOException {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+System.out.println("Started with the following arguments:");
+for (String arg : args) {
+System.out.println(arg);
+ }
+
+if (args.length == 1) {
+File file = new File(args[0]);
+if (file.isFile()) {
+// Your code here:
+
+
+ } else {
+System.err.println("Could not find " + file);
+ }
+
+ } else {
+System.out.println("Wrong argcount: " + args.length);
+System.exit(-1);
+ }
+
+
Launch Exercise02 with the one of the files of the data set as an argument (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat)!
Your program should print now the file name you selected:
+
+
Remember to never put file names directly in your code. Your program will then only work on your machine!
+
Let's open this file!
+
if (file.isFile()) {
+// A file should be opened
+ us.hebi.matlab.mat.types.Matrix mat = Mat5.readFromFile(file).getMatrix(0);
+Signal heartSignal = new mt.Signal(mat.getNumElements(), "Heart Signal");
+for (int i = 0; i < heartSignal.size(); ++i) {
+ heartSignal.buffer()[i] = mat.getFloat(i);
+ }
+ heartSignal.show();
+
+
+} else if (file.isDirectory()) {
+
+
You should now see the signal. However, this plot does not have any labels with physical units attached.
+We will change that later.
+
+
Extension of Signal.java
+
4 Points
+
To analyze this and other signals, we will extend our Signal class.
+Please implement the following methods in Signal.java that calculate some descriptive properties of the signal:
+
public float min() //< lowest signal value
+public float max() //< largest signal value
+public float sum() //< sum of all signal values
+public float mean() //< mean value of the signal
+public float variance() //< variance of the signal
+public float stddev() //< standard deviation of the signal
+
+
Test the methods in your main function and check whether the calculated values seem plausible
+by looking at your plot and printing the calculated values.
+
Physical Dimensions
+
1 Points
+
The code for this section belong to Signal.java
+
In the last exercise, we treated signals as pure sequence of numbers without any physical dimensions.
+But for medical measurements physical dimensions are important.
+We want to extend our plot to look like this with the horizontal axis labeled with seconds:
+
+
To do this we will add a new member to our signal that's describing the physical distance between two samples
+
protected float spacing = 1.0f; //< Use 1.0f as a default when we don't set the physical distance between points
+
+
Add also a setter and getter method
+
public void setSpacing(float spacing)
+public float spacing()
+
+
Read in the discription of the data set the sampling frequency of the signal
+and use it to calculate the spacing between two samples. Set this property setSpacing in the main method.
+
Next, we want to change show() to regard our spacing and to accept a ij.gui.Plot so that we can set the axis of our plot.
+
public void show(Plot plot) {
+DisplayUtils.showArray(buffer, plot, /*start of the signal=*/0.f, spacing);
+ }
+
+
Because we are lazy, we can still keep the original usage of show()
+
public void show() {
+DisplayUtils.showArray(buffer, name, , /*start of the signal=*/0.f, spacing);
+ }
+
+
Please create an instance of ij.gui.Plot in the main method of Exercise02 with descriptive labels for both axis and use if for heartSignal.show(...).
+
+
// Constructs a new Plot with the default options.
+Plot plot = new Plot("chosee title here", "choose xLabel here", "choose yLabel here")
+heartSignal.show(plot);
+
+//... add here more plotting stuff
+
+plot.show()
+
+
Determine the Heart Frequency
+
5 Points
+
The remainder of this exercise will be implemented in Exercise02.java
+
Create a file src/main/java/lme/HeartSignalPeaks.java with following content
+
package lme;
+
+import java.util.ArrayList;
+
+public class HeartSignalPeaks {
+public ArrayList<Double> xValues = new ArrayList<Double>();
+public ArrayList<Double> yValues = new ArrayList<Double>();
+}
+
We now want to find the peaks of the heart signal. We do that by finding local maxima within region that are above a certain
+threshold (here in blue).
+Find a good value of this threshold so that all peaks are above this value.
+You may use mean(), max(), min() to calculate it.
+You can see your threshold by ploting it:
+
plot.setColor("blue");
+ plot.add("lines", new double[] { 0, /* a high value */10000 }, new double[] { threshold, threshold });
+
+
+
Implement the following method that finds all peaks of the signal.
+
public static lme.HeartSignalPeaks getPeakPositions(mt.Signal signal, float threshold)
+
+
To determine the signal peaks, one can use normal maximum search over the signal values.
+Save the found maximum value (i.e. signal amplitude) in x(max) and
+the location of maximum (i.e. the time at which the peak occurs) in y(arg max).
+
You can implement the peak finding method as follows:
+
+
+
Loop over the signal and at each index
+
+
+
Use boolean variable to determine if the current signal value is above the threshold.
+
+
+
If the previous signal value was above the threshold (i.e boolean value was true), and the current value is below threshold (i.e boolean value is false)
+
+
+
Add the previous signal value as a instance of HeartSignalPeaks (like peaks.xValues and peaks.yValues)
+
+
+
This is a suggested workflow, but feel free to use your own ideas to efficently find the peaks of the signal.
You can use that signal to determine the mean cycle duration (peakIntervals.mean()), the mean heart frequency ((1. / intervals.mean())) and
+beats per minute (60. * 1. / intervals.mean()). Print those values!
+
Summary of tasks
+
To summarize the list of tasks that needs to be implemented to complete this exercise
+
+
Set the file path correctly to load the signal into your program (Ensures you can load the signal inside the program)
+
Add labels to the plot, include spacing variable in signal class for visualizing plots in physical dimensions.
+
Implement methods to compute statistical measures (like mean, median,...). (Use the formula provied in lecture/exercise slides)
+
Determine the threshold (follow the description provided here)
+
Find the peaks (follow the description provided here)
+
Calculate intervals between the peaks
+
+
Note
+
While setting file path as arguments, add "path" if there are spaces in file name since java parses space as new arguments.
+
Bonus
+
This is not required for the exercise.
+
Run Exercise02 with other files of the data set as an argument.
+What is the meaning of the mean value and the variance of time distance between the peeks?
+How do signals with low variance in the peak distances look like and how signals with high variance?
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Images and 2-d Convolution
+
In this exercise, we finally to work with images. It's time to update the file src/main/java/lme/DisplayUtils.javato the newest version.
+
This should provide you the following methods to work with images:
+
// Open a file
+public static mt.Image openImage(String path)
+
+// Download and open a file from the internet
+public static mt.Image openImageFromInternet(String url, String filetype)
+
+// Save an image to a file
+public static void saveImage(mt.Image image, String path)
+
+// Show images
+public static void showImage(float[] buffer, String title, int width)
+public static void showImage(float[] buffer, String title, long width, float[] origin, double spacing, boolean replaceWindowWithSameName)
+
+
+
They all work with the class mt.Image so let's create it!
+
Before that, add the following two methods to your Signal class (they are used by the tests of this exercise):
PS: The method addNoise is also useful to test your mean and standardDeviation calculation in exercise 2.
+Create a long signal and add noise with a specific mean and standardDeviation.
+The result of your mean and standardDeviation method should be approximatelly the same.
+
mt/Image.java
+
4 Points
+
The code for this section should go to src/main/java/mt/Image.java
+
Our goal is to share as much code with our mt.Signal class. So mt.Image will be a subclass of mt.Signal.
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+import lme.DisplayUtils;
+
+public class Image extends Signal {
+
+
+}
+
+
mt.Image has five members (apart from the ones inherited by mt.Signal).
+
// Dimensions of the image
+protected int width;
+protected int height;
+
+// Same as Signal.minIndex but for X and Y dimension
+protected int minIndexX;
+protected int minIndexY;
+
+// For exercise 4 (no need to do anything with it in exercise 3)
+protected float[] origin = new float[]{ 0, 0 };
+
+
And two constructors:
+
// Create an image with given dimensions
+public Image(int width, int height, String name)
+
+// Create an image with given dimensions and also provide the content
+public Image(int width, int height, String name, float[] pixels)
+
+
As shown in the exercise slides, we will store all the pixels in one array, like we did in Signal.
+The array should have the size width * height.
+minIndexX,minIndexY should be 0 for normal images.
+
+
+
Call the constructors of the super class Signal in the constructors of Image.
+You can call the constructor of a super class by placing super(...) with the respetive arguments in the first line of the constructor of the subclass.
+The constructor public Image(int width, int height, String name, float[] pixels) does not need to create its own array (take pixels for buffer).
+But you can check whether pixels has the correct size.
+
Let's also provide some getters!
+
// Image dimensions
+public int width()
+public int height()
+
+// Minimum and maximum indices (should work like Signal.minIndex/maxIndex)
+public int minIndexX()
+public int minIndexY()
+public int maxIndexX()
+public int maxIndexY()
+
+
atIndex and setAtIndex should work like in Signal except that they now have two coordinate indices.
+atIndex should return 0.0f if either the x or y index are outside of the image ranges.
+
public float atIndex(int x, int y)
+public void setAtIndex(int x, int y, float value) {
+
+
Remember how we calculated the indices in the exercise slides. You have to apply that formula in atIndex/setAtIndex.
+
+
+
Add the method show to display the image
+
public void show() {
+DisplayUtils.showImage(buffer, name, width(), origin, spacing(), /*Replace window with same name*/true);
+ }
+
+
Open the image pacemaker.png in a file src/main/java/exercise/Exercise03 (in the same project as previous exercise):
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package exercises;
+
+import mt.GaussFilter2d;
+import mt.Image;
+
+public class Exercise03 {
+public static void main(String[] args) {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+Image image = lme.DisplayUtils.openImageFromInternet("https://mt2-erlangen.github.io/pacemaker.png", ".png");
+ image.show();
+
+ }
+}
+
Like in Exercise 1, we want to be able to convolve our image signal.
+Infact, we will learn a lot of new ways to process images.
+Often, we need to create an output image of same size.
+Let's create an interface (src/main/java/mt/ImageFilter.java) for that, so we only need to implement this once.
The code for the convolution should go to src/main/java/mt/LinearImageFilter.java
+
Ok. Now the convolution. The class has already a method that we will need later. It uses your sum method.
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+public class LinearImageFilter extends Image implements ImageFilter {
+
+public void normalize() {
+double sum = sum();
+for (int i = 0; i < buffer.length; i++) {
+ buffer[i] /= sum;
+ }
+ }
+}
+
+
Create a constructor for it. Recall how we implemented LinearFilter!
+minIndexX and minIndexY need to be set to $-\lfloor L_x/2 \rfloor$ and $-\lfloor L_y/2 \rfloor$ when $L_x$ is the
+filter's width and $L_y$ the filter's height.
+
public LinearImageFilter(int width, int height, String name)
+
+
Convolution in 2-d works similar to convolution in 1-d.
Remember to use atIndex and setAtIndex to get and set the values.
+Implement the convolution in the method apply.
+The result image was already created by our interface ImageFilter.
The code for the Gauss filter should go to src/main/java/mt/GaussFilter2d.java.
+
The Gauss filter is a LinearImageFilter with special coefficients (the filter has the same height and width).
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+public class GaussFilter2d extends LinearImageFilter {
+
+}
+
+
It has the following constructor
+
public GaussFilter2d(int filterSize, float sigma)
+
+
In the constructor, set the coefficients according to the unormalized 2-d normal distribution with standard deviation $\sigma$ (sigma).
+Math.exp is the exponetial function. Use setAtIndex: $x$ should run from minIndexX to maxIndexX and $y$ from minIndexY to maxIndexY.
Call normalize() at the end of the constructor to ensure that all coefficients sum up to one.
+
Test your Gauss filter in Exercise03.java.
+Use arbitray values for sigma and filterSize.
+The Gauss filter will blur your input image clearly if you chose a large value for sigma.
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Image Transformations
+
In the previous exercises, we built a Signal and Image class for performing basic operations on the
+input data. We also implemented various filters to process the data and remove noise.
+In this exercise we will build on top of the image class and implement methods for performing image transformations.
+
In many medical applications there is a need to align two images so that we
+can combine the information between the images. This can be due to the images coming from
+different modalities like (CT and MRI) or in scenarios were you have an patient data at from
+different time (before and after an surgery) and you want to compare between these two images.
+In all these scenarios we use image registration bring the different images together.
+
In the below image, two x-ray views (1) and (2) are fused together to obtain the combined view(3)
+which produces more information for diagnosis. This is achieved using image registration between view(1) and view
+
One of the crucial components of image registration is image transformations.
+In this exercise we will implement basic image transformations. Additionally, we need to implement an
+interpolation method to find out the image intensity values at the transformed coordinates.
+
+
Overview of tasks
+
+
We will implement the following tasks for this exercise.
+
+
Helper functions (a. Image origin, b. Interpolation)
+
Image Transformation (a. Translation, b. Rotation, c. Scaling)
+
+
We introduce the basic theory about image transformations in theoretical background section.
+Please read the theory before proceeding since we don't re-introduce everything in the task description.
For Exercise 4 we provide a GUI that displays the image with different image transformation options.
+
+
+
+
Once you have all the transformations implemented you should be able to adjust the sliders and perform the desired transformations in an interactive manner.
+
+
+
The transformations requires an origin point about which we perform all the transformation.
+
+
+
Extend the Image class with these three methods
+
+
+
// store the origin points x,y as
+// a class variable
+public void setOrigin(float x, float y)
+
+// the origin() returns the {x,y} as float
+// array from the stored origin class variable.
+public float[] origin()
+
+// Sets the origin to the center of the image
+public void centerOrigin()
+
+
+
To ensure that everything is running, run the main function.
+
We already set the origin point for you in the file src/main/java/exercises/Exercise04.java
+
To ensure that everything is running, run the main function of Exercise04.
+
+
1. Image interpolation
+
4 Points
+
+
+
Since the image transformations heavily relies on the interpolation, we first implement the interpolation method by extending the Image class with the following method:
+
+
+
public float interpolatedAt(float x, float y)
+
+
+
The method takes in a physical $(x,y)$ coordinate and returns the image intensity at that position.
+We use bilinear interpolation to find the value at $(x,y)$ (described in the theory).
+
+
+
We can rewrite the interpolation equation using the linear interpolation formula when we want to interpolate between two points $x_1,x_2$ with function value $f(x_1),f(x_2)$ to find out the function value $f(x)$ at $x$.
Since we already know the difference $x_2 - x_1$ is either 1.0 if we have a pixel spacing of 1.0 or pixel spacing, we can simplify the above equation as follows:
+
+
$$f(x) = f(x_1) + (x-x_1) (f(x_2) - f(x_1))$$
+
+
+
+
You can use the function below to compute linear interpolation between two points $x_1,x_2$ at $x$
+
+// Definition of arguments
+// diff_x_x1 = x - x_1 compute the difference between point x and x_1
+// fx_1 = f(x_1), pixel value at point x_1
+// fx_2 = f(x_2), pixel value at point x_2
+
+float linearInterpolation(float fx_1, float fx_2, float diff_x_x1) {
+return fx_1 + diff_x_x1 * (fx_1 - fx_2);
+ }
+
+
+
+
+
We now have an way to interpolate between two points in 1D. We need to extend this to 2D case such that we can use
+it for interpolating values in our image. An illustration of how this can be done is
+already given in the theory section.
+
+
+
Implementation detail We describe here possible way to implement the interpolation scheme.
+
+
+
Find the 4 nearest pixel indices, for the given physical coordinate $(x,y)$. To do, this you have to transform
+the physical coordinate to the index space of the image.
+
+
+
Hint: In physical space all the values of $x$ and $y$
+are computed from origin. So we just need to subtract the origin from the coordinates for this correction.
+
x -= origin[0]
+y -= origin[1]
+
+
+
+
Pixel spacing also alters the physical coordinates and needs to be corrected for.
+This can be done using just by dividing each coordinate by the pixel spacing.
+
x /= spacing;
+y /= spacing
+
+
+
+
Hint: Since each pixel is a unit square you can round up and down each coordinate ($x$ and $y$) separately
+to get the 4 nearest pixels coordinates.
+
+
+
Interpolate along an axis (here we choose the x-axis) initially using the linear interpolation
+function to obtain intermediate points.
+
+
+
Now interpolate along the intermediate points (i.e you are interpolating along y-axis)
+
+
+
Note: Take care of image origin and pixel spacing for the input coordinates before you perform any of the steps.
+Also, always use atIndex and setIndex for accessing the image values.
+This ensures that we handle the values at boundary correctly.
+
+
+
+
+
Example:
+Here we look at a single point to understand how to implement our algorithm
+
+
+
If we have an input $(x,y) = (0.4,0.4)$, then the 4 nearest pixel coordinates are $(0,0)$,$(1,0),(1,1),(0,1)$
+
+
+
Interpolating the values between the points $a = (0,0)$, $b = (1,0)$, find the intermediate
+value at point $I_1 = (0.4,0)$.
+
+
+
Similarly interpolate between $c = (0,1)$ and $d = (1,1)$ to find the intermediate value at point $I_2 = (0.4,1)$.
+
+
+
Now we can just use the values at the intermediate points $I_1 = (0.4,0)$ and $I_2 = (0.4,1)$ and
+perform a linear interpolation in the y direction to obtain the final result at $(0.4,0.4)$.
+
+
+
+
+
2. Image Transformation
+
5 Points
+
Now we can start with the implementation of ImageTransformer class.
+
+
The class consists of the following member functions for translation
Also use the interface ImageFilter abstract class which you have implemented in the previous exercises.
+This can be done using implements keyword.
+
+
+
Add the method apply(Image input,Image output) which takes in two variables input and
+output of Image class type. The input variable provides the input image to our transformer class.
+The output variable is where the transformed image is stored.
+
+
+
Consider each pixel in the image with index $(i,j)$. When we access an image pixel we get
+the pixel intensity stored at the location $(i,j)$.
+
+
+
Here $(i,j)$ represents the image coordinates $(x,y)$ and the pixel value at $(i,j)$ represents $f(x,y)$.
+
+
+
We want to transform $(x,y) \to (x',y')$ and find the pixel value at the new location for a
+given set of input transformation parameters $t_x,t_y,\theta,s$ to transform the input image coordinate $(x,y)$.
+
+
+
Let us go over a possible approach to implement the apply method which
+implements (translation,rotation and scaling). In addition, once we have the transformed coordinates $(x',y')$ we
+interpolate the value at this coordinate to set the output value of the new image.
+
+
+
We can implement the transformations and interpolation using the equations defined
+in the theory section.
+
+
+
However, from the implementation perspective it is much easier to ask what will be my output image value
+at the current position $(x',y')$ for the given transformations parameters.
+
+
+
For this we need to find the input coordinate $(x,y)$ for the given transformation parameters.
+This mapping from $(x',y') \to (x,y)$ is known as the inverse transformation.
+
+
+
Just to recap our current aim is to iterate over the output image along each
+pixel $(i,j)$ (also referred as $(x',y')$) and find the inverse transformation (x,y).
+Once we find $(x,y)$ we can just interpolate the values in the input image at $(x,y)$ and
+set it to the output image value at (x',y').
+
+
+
An example code to accomplish this looks like below:
+
+
+
// We need to compute (x,y) from (x',y')
+// We use xPrime,yPrime in the code to indicate (x',y')
+// Interpolate the values at (x,y) from the input image to get
+float pixelValue = input.interpolatedAt(x,y);
+
+// Set your result at the current output pixel (x',y')
+output.setAtIndex(xPrime, yPrime, pixelValue);
+
+
+
+
+
The inverse transformations can be computed using the following equations.
+
+
+
Translation
+
+
$x = x' - t_x$
+
$y = y' - t_y$
+
+
+
+
Rotation
+
+
$x= x' \cos\theta + y' \sin\theta$
+
$y= - x \sin\theta + y' \cos\theta$
+
+
+
+
Scaling
+
+
$x= \frac{x'}{s}$
+
$y= \frac{y'}{s}$
+
+
+
+
Implementation detail Now you can directly use the above equations to implement translation, rotation and scaling.
+The entire apply method for the ImageTransformer class can be implemented as follows:
+
+
+
Iterate over each pixel in the output image (although they are just the same as input initially).
+
+
+
At each pixel the index $(i,j)$ represents our coordinates $(x',y')$ of the output image
+
+
+
Apply the transformations using the equations described above to find $(x,y)$
+
+
+
Now set the output image value at $(i,j)$ (also referred as (x',y')) from the interpolated values at $(x,y)$
+from the input image.
+
+
+
Use the setIndex() for setting the values of the output image and atIndex() for getting the values
+from input image.
+
+
+
In the above formulation we assume that we have pixel spacing of $spacing = 1.0$ and the
+image origin at $(x_0, y_0) = (0,0)$.
+
+
+
You can extend this to work for different values of pixel spacing and origin.
+
+
+
Hint: Think of pixel spacing as a scaling and origin as a translation transformation.
+(apply both spacing and origin transformation to the input coordinates $(x,y)$ as $(x * px , y * py) + (x_0,y_0))$
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Quanitfying Errors
+
3 Points
+
In Exercise03, we have seen that we can use linear low-pass filters, like the Gauss filter, to reduce
+the amount of noise in images. Let's test that!
+
Add two static methods to the Image class:
+
public static float meanSquaredError(Image a, Image b);
+public static float psnr(Image a, Image b, float maxValue); // maxValue is 255 for PNG images
+
Static also means that you will use them like float mse = Image.meanSquaredError(imageA, imageB);.
+
Open a test image and add some noise using addNoise in exercise.Exercise05 (src/main/java/exercise/Exercise05).
+
(new ij.ImageJ()).exitWhenQuitting(true);
+Image original = lme.DisplayUtils.openImageFromInternet("https://mt2-erlangen.github.io/shepp_logan.png", ".png");
+ original.setName("Original");
+
+Image noise = new Image(original.width(), original.height(), "Noise");
+ noise.addNoise(0.f, 10.f);
+
+Image noisyImage = original.minus(noise); // You might also implement your own `plus` ;-)
+
+
Apply a Gauss filter (choose a good filterSize and sigma) on the noise image and compare the result with the original image.
+Can the error be reduced in comparision to the unfiltered noisy image? Also take a look on the error images that you can
+calculate using your minus method of the class Image.
+
+
Hint: You can use a for-loop to try out different values for sigma.
+
Hint: You do not need to submit written answers to the questions in the text. Just do the correponding experiments!
+
+
Non-Linear Filters
+
3 Points
+
A quality criterion for medical images are sharp edges.
+However, though the Gauss filter reduces the noise it also blurs out those edges.
+In this exercise, we try to mitigate that problem using non-linear filters.
+
Non-linear filters calculate similar to a convolution each pixel value in the output from a neighborhood of the
+input image. Remember the sliding window from exercise 3? Non-linear filters do exactly the same.
Create a class mt.NonLinearFilter in the file src/main/java/mt/NonLinearFilter.java:
+
// Your name here <your idm>
+// Your team partner here <partner's idm>
+package mt;
+
+import lme.WeightingFunction2d;
+import lme.NeighborhoodReductionFunction;
+
+public class NonLinearFilter implements ImageFilter {
+
+// Name of the filter
+protected String name;
+// Size of the neighborhood, 3 would mean a 3x3 neighborhood
+protected int filterSize;
+// Calculates a weight for each neighbor
+protected WeightingFunction2d weightingFunction = (centerValue,neighborValue,x,y) -> 1.f;
+// Calculates output value from neighbors and weights
+protected lme.NeighborhoodReductionFunction reductionFunction;
+
+public NonLinearFilter(String name, int filterSize) {
+this.filterSize = filterSize;
+this.name = name;
+ }
+
+ @Override
+public String name() {
+return name;
+ }
+}
+
+
As you can see, NonLinearFilter uses two interfaces. You can copy them into your src/main/java/lme/ folder.
+
// in file `src/main/java/lme/WeightingFunction2d.java`
+package lme;
+
+@FunctionalInterface // Does nothing. But Eclipse is happier when it's there.
+public interface WeightingFunction2d {
+// Assigns a neighbor (shiftX, shiftY) a weight depending on its value and the value of the pixel in the middle of the neighborhood
+float getWeight(float centerValue, float neighborValue, int shiftX, int shiftY);
+}
+
+
and
+
// in file `src/main/java/lme/NeighborhoodReductionFunction.java`
+package lme;
+
+@FunctionalInterface
+public interface NeighborhoodReductionFunction {
+// Calculates the output pixels from the values of the neighborhood pixels and their weight
+float reduce(float[] values, float[] weights);
+}
+
The method should calculate each output pixel from a neighborhood. So
+
+
Create an array to hold the values of the neighborhood pixels. How many neighborhood pixels are there?
+
Loop over each output pixel
+
+
Fill the array of neighborhood pixels with values from the input image (needs two inner loops)
+
Use this.reductionFunction.reduce to determine the value of the output pixel. You can use null for the second parameter for now (we will implement weights later).
+
Save the value to the output image (using setAtIndex).
+
+
+
+
Overall, the method should look very similar to your LinearImageFilter.apply method.
+
To test your method, implement a MedianFilter in a file src/main/mt/MedianFilter.java as a subclass of NonLinearFilter.
+
// Your name here
+// Team partner's name here
+package mt;
+
+import java.util.Arrays;
+
+public class MedianFilter extends NonLinearFilter {
+public MedianFilter(int filterSize) {
+// TODO:
+super(...);
+ reductionFunction = ...;
+ }
+}
+
+
The MedianFilter is a LinearImageFilter with
+reductionFunction(values, weights) -> { Arrays.sort(values); return values[values.length / 2]; }
+(it sorts the values and takes the one in the middle).
+All you need to do is to call the super constructor and set reductionFunction.
+
Does the median filter also reduce the noise in the image?
The bilateral assign a weight to each neightborhood pixel.
+So modify your NonLinearFilter.apply method that it also creates a weights array and uses weightingFunction.getWeight to
+fill it. reductionFunction should now also be called with the weights array.
+
The bilateral has to parameters $\sigma_{\text{value}}$ and $\sigma_{\text{spatial}}$.
+For large values of $\sigma_{\text{spatial}}$ the bilateral filter behaves like a Gauss filter.
+Initialize gaussFilter in the constructor. Set weightingFunction so that the weights $w_s$ of the Gauss filter are returned.
+Set reductionFunction. It should multiply each of the values with its weight and then sum the results up.
+
Your BilateralFilter should now behave like a Gauss filter. Does it pass the test in GaussFilter2dTests when you
+use BilateralFilter instead of GaussFilter2d?
+
Edge-Preserving Filtering
+
2 Points
+
To make our bilateral filter edge preserving, we have to use also $\sigma_{\text{value}}$.
+The value weight $w_v$ is calculated as follows
In the last exercise, we want to have a look at edge detection and segmentation.
+
Edge Detection
+
7 Points
+
Open a test image in a new file src/main/java/exercise/Exercise06.java.
+
// Your name
+// Team parnter name
+package exercises;
+
+import lme.DisplayUtils;
+import mt.LinearImageFilter;
+
+public class Exercise06 {
+public static void main(String[] args) {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+ mt.Image cells = lme.DisplayUtils.openImageFromInternet("https://upload.wikimedia.org/wikipedia/commons/8/86/Emphysema_H_and_E.jpg", ".jpg");
+
+ }
+}
+
+
We will use the Sobel Filter, to estimate the gradient of the image.
+The Sobel Filter uses two filter kernels. One to estimate the x-component of the gradient and one for the y-component.
+
+
Create two LinearImageFilters with those coeffients. You can use filterX.setBuffer(new float[]{...})
+or setAtIndex to do that.
+Filter the original image with both of them!
+
+
+
+
+
+
+
X component of gradient $\delta_x$
+
Y component of gradient $\delta_y$
+
+
+
You should now have two intermediate results that can be interpreted as the x-component $\delta_x$
+and y-component $\delta_y$of the estimated gradient for each pixel.
+
Use those two images to calculate the norm of the gradient for each pixel!
Find a good threshold and set all gradient magnitude values to zero that are below this values and all other to 1.f to
+obtain an image like this with a clear segmentation in edge pixels and non-edge pixels.
For histologic examinations colored subtances called stains are used to enhance the constrast
+of different portions of the tissue.
+
Use a suitable threshold to segment the individual sites with high contrast (0 background, 1 contrasted cells).
+You can use the following method to overlay your segmentation with the original image.
+
// In lme.DisplayUtils
+public static void showSegmentedCells(mt.Image original, mt.Image segmented)
+// You may also try `showSegmentedCells(cells, segmentation, true);` with the newest version of DisplayUtils
+
+
+
Improving your Segmentation
+
This is optional and not required for the exercise.
+You might want to go directly to the evaluation of this year's exercises:
+https://forms.gle/2pbmuWtmeTtaVcKL7
+
You may notice that by just choosing a threshold you may not be able to separate each individual structure.
+
+
You can try out some operations from the menu Process > Binary while you have your 0/1 segmentation focused.
+You have to convert to 8-bit first. E.g.
We redesigned the exercises from scratch for this semester.
+Therefore, some of the exercises might have been difficult to understand or too much work.
+We are glad for your feedback to help future semesters' students😊:
+https://forms.gle/2pbmuWtmeTtaVcKL7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archive/2020/exercise3demo.png b/archive/2020/exercise3demo.png
new file mode 100644
index 00000000..657100cd
Binary files /dev/null and b/archive/2020/exercise3demo.png differ
diff --git a/archive/2020/filter-min-max.png b/archive/2020/filter-min-max.png
new file mode 100644
index 00000000..d7b6506d
Binary files /dev/null and b/archive/2020/filter-min-max.png differ
diff --git a/archive/2020/filtering.png b/archive/2020/filtering.png
new file mode 100644
index 00000000..96bb1488
Binary files /dev/null and b/archive/2020/filtering.png differ
diff --git a/archive/2020/find_peaks.png b/archive/2020/find_peaks.png
new file mode 100644
index 00000000..c64c98a7
Binary files /dev/null and b/archive/2020/find_peaks.png differ
diff --git a/archive/2020/heartbeat.png b/archive/2020/heartbeat.png
new file mode 100644
index 00000000..34401aca
Binary files /dev/null and b/archive/2020/heartbeat.png differ
diff --git a/archive/2020/image_constructor.png b/archive/2020/image_constructor.png
new file mode 100644
index 00000000..7533cef9
Binary files /dev/null and b/archive/2020/image_constructor.png differ
diff --git a/archive/2020/img_transform_theory/BilinearInterpolation.png b/archive/2020/img_transform_theory/BilinearInterpolation.png
new file mode 100644
index 00000000..cf91870b
Binary files /dev/null and b/archive/2020/img_transform_theory/BilinearInterpolation.png differ
diff --git a/archive/2020/img_transform_theory/Comparison_of_1D_and_2D_interpolation.png b/archive/2020/img_transform_theory/Comparison_of_1D_and_2D_interpolation.png
new file mode 100644
index 00000000..3f11c70b
Binary files /dev/null and b/archive/2020/img_transform_theory/Comparison_of_1D_and_2D_interpolation.png differ
diff --git a/archive/2020/img_transform_theory/index.html b/archive/2020/img_transform_theory/index.html
new file mode 100644
index 00000000..2959155a
--- /dev/null
+++ b/archive/2020/img_transform_theory/index.html
@@ -0,0 +1,297 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Image transformation theory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Consider a point $\mathbf{x}=(x,y)$ in the 2D space. Then
+we can define translation, rotation and scaling
+using the following equations which maps the points from $\mathbf{x} \to \mathbf{x}'$ where $\mathbf{x}' = (x',y)'$ is the new transformed coordinates.
+
Translation
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = x + t_x$
+
$y' = y + t_y$.
+
+
This can also be written in vector notation as follows:
+
+
$\mathbf{x}' = \mathbf{x} + \mathbf{t}$ where $\mathbf{t} = (t_x, t_y)$
+
+
+
Rotation
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = x cos\theta + y sin\theta$
+
$y' = -x sin\theta + y cos\theta$
+
+
+
+
Scaling
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = sx$
+
$y' = sy$.
+
+
+
+
+
We can also chain the different transformations and compute the transformed coordinate using a single equation
+
$$x' = s (x \cos\theta + y \sin\theta ) + t_x$$
+$$y' = s(-x \sin\theta + y \cos\theta) + t_y$$
For more details about image transformations, you can
+also check out the computer vision book by Richard Szeliski.
+A free pdf is available on the website.
+
Image interpolation
+
Let us consider an example image
+transformation. Initially we have an unit square with its left corner placed at the origin (0,0). Assume that we have image intensity values at the
+corners of the unit square at a = (0,0), b =(0,1),
+c = (1,1), d = (0,1).
+
We apply a small translation $\mathbf{t} = (0.5,0.5)$ to the square. As you can see in the image, now our left corner point is at $a' = (0.5,0.5)$.
+Since we don't have the value at this point we are forced to approximate the value from the information available to us. This is the main
+reason for implementing image interpolation function as image transformations can always lead to coordinates for which we don't have any value and we approximate the value using the neighbourhood information.
+
+
The way in which we use the neighbouring information governs the quality of the interpolated image. The different types of interpolation are as follows:
+
+
Nearest neighbour
+
Bilinear
+
Bi-cubic
+
+
Illustration of different types of interpolation
+
The image below shows how the different types of interpolation works. The discrete points are the places where we know the function value and
+the lines connecting these points represents the interpolated function values.
We will implement only bilinear interpolation
+for our Image class.
+Lets dive a bit deeper into the bilinear
+interpolation and look at the how the values are interpolated using this method.
Consider the above image where the red dots ($Q_{ij}$) indicate the discrete points where we know the function value. We want to approximate the function value at point $P$.
+
Consider the points(red dots) in the above image:
+
$$Q_{11} = (x_1,y_1), Q_{21} = (x_2,y_1)$$
+
$$ Q_{12} = (x_1,y_2), Q_{22} = (x_2,y_2)$$
+
Assume that each of these points $Q_{ij}$ corresponds to an image pixel with intensity values.
+
Now we need to find the image intensity value at point $P= (x,y)$ which is in between the points $Q_{ij}$
+
Let us consider one coordinate at
+a time (i.e. $x_i$ or $y_i$) for interpolation.
+Here we intially interpolate along the $x$-axis.
+So now our aim is to find values at $P(x,y_i)$.
+(i.e. find intermediat values $R_i (x,y_i)$. We have two values of $y_i$ so we can find two intermediate values.)
+
We can obtain two such values by interpolating along
+$Q_{11}, Q_{21}$ and find out the intermediate value as $R_1$ and between $Q_{12}, Q_{22}$ and find out the intermediate value $R_2$.Look at the image of how we just interpolate along the line.
+
We can directly use the linear interpolation equation to find out the values of $f(R_1)$ and $f(R_2)$
Once we have the values at $R_1 = (x,y_1)$ and $R_2 = (x,y_2)$ we can again use the same linear interpolation formula along the $y$-axis and find the function value $f(P)$ at $P=(x,y)$.
+
This way we can interpolate(approximate) any values (x,y) if we know the neighbouring values. However when we actually implement the method we also need to find out the neighbouring values on our own as they are not provided.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archive/2020/img_transform_theory/interpolation_img.png b/archive/2020/img_transform_theory/interpolation_img.png
new file mode 100644
index 00000000..b5d0b202
Binary files /dev/null and b/archive/2020/img_transform_theory/interpolation_img.png differ
diff --git a/archive/2020/img_transform_theory/rotation.png b/archive/2020/img_transform_theory/rotation.png
new file mode 100644
index 00000000..42d779f7
Binary files /dev/null and b/archive/2020/img_transform_theory/rotation.png differ
diff --git a/archive/2020/img_transform_theory/scaling.png b/archive/2020/img_transform_theory/scaling.png
new file mode 100644
index 00000000..ec0da6fa
Binary files /dev/null and b/archive/2020/img_transform_theory/scaling.png differ
diff --git a/archive/2020/img_transform_theory/translation.png b/archive/2020/img_transform_theory/translation.png
new file mode 100644
index 00000000..4cf4afed
Binary files /dev/null and b/archive/2020/img_transform_theory/translation.png differ
diff --git a/archive/2020/img_transform_theory/types_trans_img_selzki.png b/archive/2020/img_transform_theory/types_trans_img_selzki.png
new file mode 100644
index 00000000..857158fb
Binary files /dev/null and b/archive/2020/img_transform_theory/types_trans_img_selzki.png differ
diff --git a/archive/2020/img_transform_theory/types_trans_mat_szeliski.png b/archive/2020/img_transform_theory/types_trans_mat_szeliski.png
new file mode 100644
index 00000000..4125b796
Binary files /dev/null and b/archive/2020/img_transform_theory/types_trans_mat_szeliski.png differ
diff --git a/archive/2020/import_eclipse/1.png b/archive/2020/import_eclipse/1.png
new file mode 100644
index 00000000..8c615f1a
Binary files /dev/null and b/archive/2020/import_eclipse/1.png differ
diff --git a/archive/2020/import_eclipse/2.png b/archive/2020/import_eclipse/2.png
new file mode 100644
index 00000000..6c081115
Binary files /dev/null and b/archive/2020/import_eclipse/2.png differ
diff --git a/archive/2020/import_eclipse/3.png b/archive/2020/import_eclipse/3.png
new file mode 100644
index 00000000..6ecb4d48
Binary files /dev/null and b/archive/2020/import_eclipse/3.png differ
diff --git a/archive/2020/import_eclipse/4.png b/archive/2020/import_eclipse/4.png
new file mode 100644
index 00000000..6b16cb41
Binary files /dev/null and b/archive/2020/import_eclipse/4.png differ
diff --git a/archive/2020/import_eclipse/5.png b/archive/2020/import_eclipse/5.png
new file mode 100644
index 00000000..62719806
Binary files /dev/null and b/archive/2020/import_eclipse/5.png differ
diff --git a/archive/2020/import_eclipse/6.png b/archive/2020/import_eclipse/6.png
new file mode 100644
index 00000000..37699e85
Binary files /dev/null and b/archive/2020/import_eclipse/6.png differ
diff --git a/archive/2020/import_eclipse/eclipse_gradle.png b/archive/2020/import_eclipse/eclipse_gradle.png
new file mode 100644
index 00000000..0e94addf
Binary files /dev/null and b/archive/2020/import_eclipse/eclipse_gradle.png differ
diff --git a/archive/2020/import_eclipse/execute.png b/archive/2020/import_eclipse/execute.png
new file mode 100644
index 00000000..c3553a76
Binary files /dev/null and b/archive/2020/import_eclipse/execute.png differ
diff --git a/archive/2020/import_eclipse/imagej.png b/archive/2020/import_eclipse/imagej.png
new file mode 100644
index 00000000..124d1aab
Binary files /dev/null and b/archive/2020/import_eclipse/imagej.png differ
diff --git a/archive/2020/import_eclipse/index.html b/archive/2020/import_eclipse/index.html
new file mode 100644
index 00000000..578adffd
--- /dev/null
+++ b/archive/2020/import_eclipse/index.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Import a Gradle project with Eclipse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
On Windows, download the latest Java version (14.1) from Oracle.
+On Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.
+At least Java 11 is required.
Chose path of the downloaded project and click Next
+
+
+
+
Grab a coffee while it's downloading ImageJ
+
+
+
+
Try to run Exercise01
+
+
+
+
You are seeing red squiggles, you found a bug in a Eclipse plugin. Upgrade it in the Eclipse Marketplace!
+
+
+
+
Search for gradle build! Then, click on the Installed button of "Buildship Gradle Integration.
+
+
+
+
... and click on Update! This should solve the bug after a restart.
+
+
+
+
You should now see ImageJ when you start Exercise01.
+
+
+
+
If you're still facing problems: please also check whether a valid Java Runtime Enviroment was found by right-clicking on the project folder
+(if it still has red crosses). Select Properties -> Java Build Path. Sometimes Eclipse does not find your Java
+installation. You can select it there.
On Windows, download the latest Java version (14.1) from Oracle.
+On Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.
+At least Java 11 is required.
+
+
+
You can get IntelliJ from here. There's a free community edition and you can also
+unlock the Ultimate Edition when applying with your FAU email adress here.
During this semester we will learn how computer tomography (CT) reconstruction algorithms work.
+Your first task is to find out more about CT and write an introduction for your project report.
+
+
Find an informative title for your project report. "Project Report" and "Introduction" are not good titles.
+
What is computer tomography?
+What is the problem it tries to solve? When and how was it first introduced?
+What kind of electromagnetic radition is used to aquire the images?
+How did modern CT devices improve over their predecessors? What is the typical spatial resolution of a state-of-the-art CT scanner?
+
What are advantages and disadvantages of CT in comparison with other modalities. Include at least two advatages and
+two disadvantages.
+
Give a short overview of the contents of the following sections of your project report.
+
Proof all your statements with references. You should use at least four distinct sources in your introduction that are
+not webpages.
+
+
The introduction should not be longer than one page and but at least half a page.
+
Your introduction and conclusion should not contain any images.
To understand how we can reconstruct a volume from X-ray images, we will first go through the process of how these X-ray images
+were acquired from a physical volume.
+
In your project report you should...
+
+
explain the reader the physical process of X-ray attenuation and its material dependance.
+What materials in the human body attenuate more X-rays than others?
+How is this represented in a CT reconstruction? Or in other words: what quantity does a CT reconstruction actually show?
+Which kind of tissues appear therefore lighter and which darker?
+
explain the fundamental theorem hat describes this process (X-ray attenuation). Give a formula!
+Explain all the symbols that you use in the formula.
+
prove your explanations with references, also provide the source of the formula.
+
+
In this project work, we will make some simplifying assumptions on the acquisition geometry.
+I made a drawing of the path of a single X-ray through a slice of our volume.
+Since this ray crosses the origin of our coordinate system we call it the principal ray.
+
+
What are the coordinates $\vec{x}_{P}$ of a point $P$ on the line of the principal ray in dependency of the angle $\theta$ ($\alpha$ in drawing) and the distance
+from origin $r$?
+
In reality, not all X-rays cross the coordinate origin.
+What are the coordinates $\vec{x}_{P'}$ of a point $P'$ that is on a ray that hits the detector at coordinate $s$ in depedency of $r$ and $\theta$?
+We assume parallel rays.
+
Hint: What vector do you have to add to $P$ to get to $P'$?
+
+
Unfortunally, the figure was written on paper and you shouldn't use hand drawn figures in the project report (as you can see they look ugly).
+Please create one or two plots on the computer that are explaining your derived the ray equations to the reader of the project
+report. Decide which information is important for the reader to understand your text.
+
+
How does the described situation differ from the actual acquisition geometry of modern CT scanners?
+What are the reasons for that? Could our simplified situation be implemented in reality?
+
+
+
+
After Implementation: Describe briefly your implementation of the projection.
+Do not refer any Java classes or variable names!
+Give a formula for how you calculated the different projection angles.
+Give a formula for how you calculated the projection result for each ray.
+What physical effects were neglected in our simulation but are present in reality?
+Name at least three non-idealities of real systems.
+
+
This part of the project work should be not longer than 1.5 pages.
+After some remarks from you: 2 pages are also ok..
+
Implementation
+
We already have an volume class which can store the stack of image slices. Additionally, we also want
+to store the projection images (referred as sinograms) for these stack of image slices. For this create
+create a class mt.Projector in a file src/main/java/mt/Projector.java, which can hold both volume slices
+and the sinograms.
+
// Your name here <your idm>
+package mt;
+
+import java.util.stream.IntStream;
+
+public class Projector {
+// Our volume
+private mt.Volume volume;
+// Our sinogram
+private mt.Volume sinogram;
+
+}
+
+
Imlement a constructor for this class.
+It should call this.volume.centerOrigin() and set the origin of each sinogram slice to 0.0f, -sinogram.physicalHeight() * 0.5f so we use the same coordinate
+systems as in our drawings (it might be handy to set the origin of sinogram to 0.0f, -sinogram.physicalHeight() * 0.5f, -sinogram.physicalDepth() * 0.5f, requires a Volume.setOrigin method)
+
public Projector(mt.Volume projectionVolume, mt.Volume sinogram) {
+ ... // Implementation here
+assert sinogram.depth() == volume.depth() : "Should have same amount of slices";
+ }
+
We assume that we aquire $N$ projections at $N$ different angles $\theta$.
+All angles should have the same distance from each other and divide $2\cdot \pi$ in $N$ equal parts (we always use radians for angles).
+
Implement a method which computes angle value of $n^{th}$ angle index. We want to use the method such that at $n=0$ our angle value should return $\theta=0$, at $n=1$ returns $\theta= \frac{2\cdot \pi}{N}$, and so on. Think of a general formula to compute the $n^{th}$ angle and describe it briefly in the description of your implmentation.
+
Use this formula to implement the following method:
+
// In mt.Projector
+public float getNthAngle(int angleIdx)
+
+
Now, recall the formula you derived for the position of point $P'$ in the previous section.
+We could directly use those coordinates $\vec{x}$ to calculate the integral in Lambert-Beer's law for a ray with angle $\theta$ and shift $s$ over a slice $\mu$ on our computers:
$R$ is the radius of the circle circumscribing our rectangular slice. You can see it in the drawing.
+The path integral goes along the path marked in yellow in the drawings.
+
We are only interested in the value of the line integral
Calculate this sum for a fixed $s$ and $\theta$ on a slice of our volume!
+You can use volumeSlice.interpolatedAt(x,y) to deterime $\mu(\vec{x})$ and access values of our slice.
We have now calculated one value of one of the gray rays on our slice which translates to one point in our sinogram.
+
+
Next we want to call this function for every ray and every pixel of our sinogram in the following method:
+
// in mt.Projector
+public void projectSlice(int sliceIdx) {
+
+
To do that ...
+
+
+
Get the slice sliceIdx from this.volume using getSlice
+
+
This is a slice of our volume with coordinates $x$ and $y$.
+
$x$ runs from left to right
+
$y$ runs from top to bottom
+
+
+
+
Get the sinogram for that slice sliceIdx from this.sinogramm using getSlice
+
+
This is a slice of our sinogram with physical coordinates $s$ and $\theta$.
+
$\theta$ runs from left to right
+
$s$ runs from top to bottom
+
+
+
+
Iterate over each pixel of the sinogram. I would use angleIdx, sIndex as a loop variables.
+
+
Calculate the actual value of s from sIndex.
+
Calculate theata from angleIndex by calling the function getNthAngle
+
Call projectRay with s and theta
+
Save the result to sinogram at positions angleIndex and sIndex
+
+
+
+
Hint Computing s from sIndex is just using the physical coordinates and shifting the origin of $s$ axis in
+the sinogram to the center.
+This can be done by muliplying sIndex with sinogram.spacing() (pixel size of the detector) and adding
+sinogram.origin()[1] (== -sinogram.physicalHeight() * 0.5f).
+
We recommend you to test your algorithm using a simple image.
+Choose a good size for the sinogram to capture the whole image (e.g. height == volume.height).
+For simplicity, you do not need to change the spacing of the volume or the sinogram.
+
+
+
+
+
+
+
Simple test slice
+
Sinogram of that slice
+
+
+
I used a high number of 500 angles to get a near square image.
+When you are using less angles the width of your sinogram will be smaller.
+Use less angles to compute the results faster.
+
You may also apply projectSlice on all slices and display the sinogram.
+Ctrl+Shift+H should reveal a rotating torso when using one the Cancer Archive scans:
Project Work 6 – Iterative Reconstruction and Conclusion
+
+ Stephan Seitz
+
+
+
+
+
+
+
+
+
Iterative Reconstruction
+
Using backprojection, we could achieve a blurry reconstruction result.
+The Filtered Backprojection algorithm solves this problem by applying a filtering step before backprojection.
+For the project work, we will take a different approach.
+
In the last section, you measured the error between your reconstruction and the ground truth volume.
+However, this is only possible when doing a simulation and not when reconstructing an unknown real object.
+What we can do instead is meassuring the error in the projection domain by simply projecting the reconstruction!
+Implement the following method to use with our reconstructionProjector:
+
// In mt/Projector.java
+public void reconstructIteratively(Image meassuredProjection, int sliceIdx, int numIterations)
+
+
It should
+
+
call projectSlice on volume to obtain a projection of our reconstruction
+
calculate an error image subtracting singogram.getSlice(sliceIdx) from meassuredProjection
+
replace the current slice of singogram by our error image
+
call backprojectSlice with the current sliceIdx
+
repeat all this for numIterations iterations
+
+
+
So we're now doing an reconstruction of the error sinogram and adding it to our blurry image.
+Does this reduce our error?
+
Our reconstruction algorithm is now finished. But it operates only on 2-d slices.
+Create 3-d versions of projectSlice, backprojectSlice and reconstructIteratively:
+
public void project()
+public void backproject()
+public void reconstructIteratively(Volume measuredProjections, int numIterations)
+
+
All they should do is calling their 2-d version for each slice.
+You should now be able to reconstruct volumes.
+
Hint: You can use the following construct instead of a for-loop to enable multi-threaded calculation.
+
// You have to replace `var` by `java.util.concurrent.atomic.AtomicInteger` when using Java 1.8
+ var progress = new java.util.concurrent.atomic.AtomicInteger(0);
+IntStream.range(0, sinogram.depth()).parallel().forEach(z -> {
+System.out.println("Progess: " + (int) (progress.incrementAndGet() * 100.0 / (double) sinogram.depth()) + " %");
+//Do stuff here for slice z
+ ...
+ });
+
+
Project Report
+
For the project, describe how your iterative reconstruction algorithm works. You should not mention implementation details
+like variable or function names. Compare it with the Filtered Backprojection algorithm! It's not necessary to explain
+Filtered Backprojection Algorithm in detail. Just highlight the main difference.
+
Test your reconstruction algorithm on a slice of a CT reconstruction of the Cancer Imaging Archive.
+Measure the error of the reconstructed slices after each iteration (so call reconstructIteratively with numIterations == 1).
+Include a figure showing this error in dependence of the iteration number in the project report.
+Include images comparing ground truth, the backprojected slice and the result after a few iterations.
+
Comment on the error and the images in your text.
+Does the result of the iterative reconstruction look better than solely using backprojection?
+
This part of the project report should be no longer than 1.5 pages.
+
Conclusion
+
In the last part, summarize want you have implemented and explained in your project report.
+Review the shortcommings of your simplified approach and how they could be mitigated in future.
+Draw a conclusion on your work!
+
This part of the project work should be about a quarter page long and should contain no images.
+
Submission
+
Submit your project report as a PDF and your entire project folder of your code until August 16 23:55h.
+Your project must compile as a whole!
+Make sure that you had a last look at our checklist.
Create a New launch configuration with main class exercises.Exercise02
+
+
Set the arguments with the file name in quotes: "path to your data set file" (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat). Don't forget the quotes!
+
Fill in the form with main class exercises.Exercise02 and your file name of the file that you want to open (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat) as programm arguments in quotes!
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archive/2020/set_args_intellij/run.png b/archive/2020/set_args_intellij/run.png
new file mode 100644
index 00000000..88203fb5
Binary files /dev/null and b/archive/2020/set_args_intellij/run.png differ
diff --git a/archive/2020/shepp_100.webm b/archive/2020/shepp_100.webm
new file mode 100644
index 00000000..8c884a10
Binary files /dev/null and b/archive/2020/shepp_100.webm differ
diff --git a/archive/2020/shepp_100_cropped.webm b/archive/2020/shepp_100_cropped.webm
new file mode 100644
index 00000000..813bb6ca
Binary files /dev/null and b/archive/2020/shepp_100_cropped.webm differ
diff --git a/archive/2020/shepp_9_cropped.webm b/archive/2020/shepp_9_cropped.webm
new file mode 100644
index 00000000..d85c1f47
Binary files /dev/null and b/archive/2020/shepp_9_cropped.webm differ
diff --git a/archive/2020/shepp_logan.png b/archive/2020/shepp_logan.png
new file mode 100644
index 00000000..05a05382
Binary files /dev/null and b/archive/2020/shepp_logan.png differ
diff --git a/archive/2020/shepp_logan_bilateral.png b/archive/2020/shepp_logan_bilateral.png
new file mode 100644
index 00000000..98ad3466
Binary files /dev/null and b/archive/2020/shepp_logan_bilateral.png differ
diff --git a/archive/2020/shepp_logan_gauss.png b/archive/2020/shepp_logan_gauss.png
new file mode 100644
index 00000000..7232232a
Binary files /dev/null and b/archive/2020/shepp_logan_gauss.png differ
diff --git a/archive/2020/shepp_logan_noisy.png b/archive/2020/shepp_logan_noisy.png
new file mode 100644
index 00000000..7764ef7b
Binary files /dev/null and b/archive/2020/shepp_logan_noisy.png differ
diff --git a/archive/2020/shepp_logan_original.png b/archive/2020/shepp_logan_original.png
new file mode 100644
index 00000000..05a05382
Binary files /dev/null and b/archive/2020/shepp_logan_original.png differ
diff --git a/archive/2020/signal-min-max.png b/archive/2020/signal-min-max.png
new file mode 100644
index 00000000..08bc7dac
Binary files /dev/null and b/archive/2020/signal-min-max.png differ
diff --git a/archive/2020/sinogram.png b/archive/2020/sinogram.png
new file mode 100644
index 00000000..40dd3f82
Binary files /dev/null and b/archive/2020/sinogram.png differ
diff --git a/archive/2020/sinogram/index.html b/archive/2020/sinogram/index.html
new file mode 100644
index 00000000..4a465190
--- /dev/null
+++ b/archive/2020/sinogram/index.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Project Work 4 – Sinogram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Now, you should be able to generate sinograms from volume slice.
+Generate two sinograms from two volume slices:
+
+
+
One sinogram from a simple test image. You can use for instance a white circle as I was doing in the last section.
+
+
+
One sinogram from a real CT reconstruction. You should cite the source of that image. The Cancer Imaging Archive even
+explains you how to do that.
+
+
+
Show both the volume slices and the sinograms.
+Explain to the reader what they are seeing. What is the radon transform?
+Can the radon transform be inverted?
+
+
+
Do the sinograms contain some kind of symmetry? What is the reason for that?
+Do we really need a 360° degree scan?
Important: You have to work alone on your project work. No team partners allowed anymore 😔!
+
CT reconstruction treats the problem of recovering a three-dimensional volume from a set of X-ray images.
+So we will need two classes that represent our volume and our stack of X-ray projections.
+It turns out that we can interpret our projections and our volume just as a list of 2-d images.
+
+
+
+
+
+
A volume: very much just multiple images stacked one over another
+
+
+
Create a class mt.Volume
+
// Your name <your idm>
+// No team partner... So sad 😢!
+
+package mt;
+
+import java.util.Arrays;
+import java.util.stream.IntStream;
+
+public class Volume {
+// Here we store our images
+protected mt.Image[] slices;
+
+// Dimensions of our volume
+protected int width, height, depth;
+
+// Spacing and origin like for mt.Image
+protected float spacing = 1.f; // spacing is now our voxel size
+protected float[] origin = new float[]{0, 0, 0}; // position of the top-left-bottom corner
+
+// A name for the volume
+protected String name;
+
+}
+
+
Create a constructor. Remember: width, height, depth, name must be set and slices must be created as an array.
+We need depth images of size width $\times$ height for the slices.
+
public Volume(int width, int height, int depth, String name)
+
+
Getters/setters...
+
public int width()
+public int height()
+public int depth()
+public float physicalWidth() // width * spacing()
+public float physicalHeight() // height * spacing()
+public float physicalDepth() // depth * spacing()
+
+public mt.Image getSlice(int z)
+public void setSlice(int z, mt.Image slice)
+
+public float spacing()
+public void setSpacing(float spacing) // should also set spacing also for all slices!
+public String name()
+public float[] origin()
+
+// should set origin to (-0.5 physicalWidth, -0.5 physicalHeight, -0.5 physicalDepth) and call centerOrigin on each slice
+public void centerOrigin()
+
+
Now comes the interesting part: visualize the volume!
+You will need to update src/main/java/lme/DisplayUtils.java file and use the following command to visualize the volume.
+
public void show() {
+ lme.DisplayUtils.showVolume(this);
+ }
+
+
You can download a volume from the Cancer Imaging Archive.
+Use one of the following links (it does not matter which CT volume you use).
// This file is only for you to experiment. We will not correct it.
+
+package project;
+
+import mt.Volume;
+
+class Playground {
+
+public static void main(String[] args) {
+// Starts ImageJ
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+// You can now use drag & drop to convert the downloaded folder into a *.tif file
+
+ }
+
+}
+
+
+
Save it the opened DICOM as a *.tif file (File > Save As > Tiff...).
+There are more smaller test volumes on studOn.
+
+
+
+
+
Open the saved tiff file in the main of a file src/main/java/project/Playground.java:
+
// This file is only for you to experiment. We will not correct it.
+
+package project;
+
+import mt.Volume;
+
+class Playground {
+
+public static void main(String[] args) {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+Volume groundTruth = DisplayUtils.openVolume("path/to/file.tif");
+ groundTruth.show();
+
+ }
+
+}
+
+
We've collected a small checklist for things that you might forget when writing your project work.
+For a detailed description on how to write the report, refer to the exercise slides.
+The project report can be in English or German.
+
To achieve full 10 points for writing style...
+
+
Use the templates we provide to you. Do not modify the style or the formatting. No ornaments for page numbers!
+
Use scientific references to prove your explanantions and to clearly separate your work from the work of others.
+
Do not use more than two references that are websites only. If you have to cite a website use the recommended style from
+the exercise slides.
+
Create a bibliography. Follow the advises from the exercise slides.
+The bibliography must be sorted (either alphabetically when using the Name/Year citation style or
+by the order you use them in the text when numbering the sources).
+Use the same citation style for all your references.
+
Do not use footnotes!
+
Check your spelling: there shouldn't be any obvious spelling errors that can be detected by Word.
+
All symbols in equations should be explained in the text.
+
All equations, figures and tables (tables probably not needed) should be numbered and referenced in the text.
+
All your figures should look professional.
+They should not be blurry or hand-drawn and images should not have a window border of ImageJ.
+They should not overlap with the text.
+
All figures should have captions giving a brief description what the figure shows. The caption should be below the figure.
+
All figures should be full-width, not next text. A figure can contain multiple images next to each other.
+
A list of figures is not needed.
+
Do not use abbreviation without introducing them. The first time you should write computer tomography (CT).
+After that, CT is enough.
+
Label all axes in all plots and coordinate systems!
+
Never use "Ich" or "I". In English texts it's acceptable to use "we" even though you did all the work alone.
+
+
To obtain all the points for the content of your report
+
+
Check whether you have addressed all the questions in the task description.
+
Check for numbers in the questions. Do you really have two advantages and two disadvanges of using computer tomography?
Segmentation is a widely used technique in medical image or general image processing. The development of the method still continuous today.
+Artificial intelligence and deep neural networks also influence this process:
+
+
Name 2 examples of segmentation methods which use AI
+
Describe the methods shortly and give a citation for each method.
+
Make an educated guess on how the future of segmentation methods might look like!
+
+
This part of the project should be about half a page long.
+
Conclusion
+
In the last part, summarize want you have implemented and explained in your project report.
+Review the shortcomings of your approaches and how they could be mitigated in future.
+Draw a conclusion on your work!
+
This part of the project work should be about a quarter page long and should contain no images.
+
Submission
+
Submit your project report as a PDF and your entire project folder of your code until April 11 23:55h via email to: paul.stoewer@fau.de.
+Your project must compile as a whole!
+Make sure that you had a last look at our checklist.
Lets try to evaluate the Method Otsu's with our MIP image and a picture of cultured neuroblastoma cells [1] for comparison:
+
+
+
+
+
+
+
MIP Image of Volume1
+
Picture of cells
+
+
+
+
+
+
+
+
+
+
MIP Image Segmentation with Otsu Threshold
+
Cell Image Segmentation with Otsu Threshold
+
+
+
+
Explain in your report:
+
+
What are the limitations of the Method of Otsu's?
+
+
Use the example of the MIP Image and the Cell Image.
+
Include and use both histograms in your explanation.
+
+
+
+
Root Mean Square Error
+
We can also try to compare different threshold with a ground truth image to find the best threshold and evaluate our results. We will implement a new method in our PostProcessing class:
The Root Mean Square Error is defined as following: $RMSE(\theta)=\sqrt{E((\hat{\theta}-\theta)^2)}$.
+ We want to compare our segmented images. Therefore our estimated value $\theta$ can be described by our pixel values: $RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^n(\hat{x}_i-x_i)^2}$, where $\hat{x_i}$ are the pixel values of our ground truth image and $x_i$ the pixel values from our segmentation.
+
We can now use the following Image as ground truth Image $\hat{\theta}$:
We can make use of our Signal Class in our Framework again: Create a Signal with the size of all possible thresholds in your image. Afterwards you can show a graph with the different errors in comparison to the corresponding threshold. Which threshold has the lowest RSME in comparison with our ground truth image $\hat{\theta}$?
+
Describe in your report:
+
+
Why do we need statistical evaluation methods in science?
+
+
Include a graph wich shows the relationship between threshold and RSME for all possible grey values.
+
Describe the graph and compare the RSME with the according threshold
+
What is the big disadvantage of the RSME in our case?
+
+
+
+
The content for this section should be about half a page long.
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
ImageJ
+
The image processing program we want to use during this semester is called ImageJ.
+It was developed at the US National Institutes of Health and is used nowadays especially in research
+for medical and biological images.
+
If you want to, you can download a stand-alone version of the program here.
+
Getting started
+
ImageJ can also be used as a Java library.
+We already created a Java project that uses ImageJ.
+You can download it from https://github.com/mt2-erlangen/exercises-ss2021 and import with the IDE of your choice:
You should now be able to execute the file src/main/java/exercises/Exercise01.java
+
+
+
The following code is opening the ImageJ main window and exits the running program when the window is closed.
+
public class Exercise01 {
+public static void main(String[] args) {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+ }
+}
+
+
IntelliJ will only allow to run Exercise01 when there are no errors in the project. You can just out-comment the method lme.Algorithms.convolution1d until you implemented your Signal class.
+
Signal.java
+
4 Points
+
As a first step, we will implement the class Signal
+which should hold a signal of finite length.
+Create the file src/main/java/mt/Signal.java.
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+import lme.DisplayUtils;
+import ij.gui.Plot;
+
+public class Signal {
+
+}
+
+
Signal should have the following members
+
protected float[] buffer; // Array to store signal values
+protected String name; // Name of the signal
+protected int minIndex; // Index of first array element (should be 0 for signals)
+
+
Implement two constructors for Signal
+
public Signal(int length, String name) // Create signal with a certain length (set values later)
+public Signal(float[] buffer, String name) // Create a signal from a provided array
+
+
Implement the following getter methods for Signal
+
public int size() // Size of the signal
+public float[] buffer() // Get the internal array
+public int minIndex() // Get lowest index of signal (that is stored in buffer)
+public int maxIndex() // Get highest index of signal (that is stored in buffer)
+public String name() // Get the name of the signal
+
+
Next, we want to visualize our Signal in the method show. You can use provided function lme.DisplayUtils.showArray.
+To test it, create a Signal with arbitray values in the main method of Exercise01 and call its show method.
+
public void show() {
+DisplayUtils.showArray(this.buffer, this.name, /*start index=*/0, /*distance between values=*/1);
+ }
+
+
In our black board exercises, we agreed that we want to continue our signals with zeros where we don't have any values stored.
+If we access indices of our Signal with values smaller than minIndex() or larger maxIndex() we want to return 0.0f.
+If a user accesses an index between minIndex() and maxIndex() we want to return the corresponding value stored in our array.
+
+
Implement the method atIndex and setAtIndex. Please be aware that minIndex can be smaller than 0 for subclasses of Signal.
+If setAtIndex is called with an invalid index (smaller than minIndex or greater than maxIndex), it's ok for the program to crash.
+This should not happen for atIndex.
+
public float atIndex(int i)
+public void setAtIndex(int i, float value)
+
+
You can check the correctness of atIndex/setAtIndex with the test testAtIndex in file src/test/java/SignalTests.java.
+
LinearFilter.java
+
3 Points
+
Implement LinearFilter in file src/main/java/LinearFilter.java as a subclass of Signal.
+LinearFilter should work like Signal except its minIndex should be at - floor(coefficients.length/2) as in the exercise slides.
+
+
LinearFilter should have a constructor that checks that coefficients is an array of odd size or throws an error otherwise (any error is ok).
+
public LinearFilter(float[] coefficients, String name)
+
+
and a method that executes the discrete convolution on another Signal input and returns an output of same size.
+
public Signal apply(Signal input);
+
+
You should be able to directly use the formula from the exercise slides (f is the input signal, h our filter, $L$ the filter length)
or with our minIndex/maxIndex methods for each index $k$ of the output signal.
+$$g[k] = \sum_{\kappa=h.\text{minIndex}}^{h.\text{maxIndex}} f[k-\kappa] \cdot h[\kappa] $$
+
Be sure that you use atIndex to access the values of input and the filter.
+
+
You can test your convolution function with the tests provided in src/test/java/LinearFilterTests.java.
+
Good test cases are:
+
+
{0,0,1,0,0}: this filter should not change your signal at all
+
{0,1,0,0,0}: this filter should move your signal one value to the left
+
{0,0,0,1,0}: this filter should move your signal one value to the right
+
+
Questions
+
3 Points
+
In this task we want to convolve a test Signal with three different linear filters.
+Filter the signal $f[k]$ Signal(new float[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, "f(k)")
+with filters
+
+
$h_1[k]$: {1.0f/3 ,1/3.f ,1/3.f},
+
$h_2[k]$: {1/5.f, 1/5.f , 1/5.f, 1/5.f, 1/5.f},
+
$h_3[k]$: {0.5f, 0, -0.5f}.
+
+
Save the images of the input signal and filtered results (recommended filetype: png).
+Create a PDF document (e.g. with Word or LibreOffice) with those images in which you describe briefly how the filters modified the input signal and why.
+
Submitting
+
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Then, compress your source code folder src to a zip archive (src.zip) and submit it and your PDF document via StudOn!
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Statistical Measures
+
In this exercise, we want to have a look on how we can analyze signals using simple statistical measures.
+We will use a freely available ECG data set with the goal to distinguish healthy from patients with heart rythm problems.
+
+
You can find the original data set here
+but we recommend to use a post-processed version available on studOn.
+
Gradle Build System
+
In Medizintechnik II we use the build system Gradle.
+Gradle is especially popular for Android projects since it's easy to add new software dependencies that will be automatically
+downloaded.
+
In our case, the published data set is saved as Matlab *.mat files.
+To read those files, an external dependency was already added to our build.gradle file.
does the magic and automatically downloaded a *.mat file reader.
+In case, you need to add external software to your own projects you can use this search engine.
+
Tasks
+
Loading one of File of the Data Set
+
Load the file src/main/java/exercises/Exercise02.java (available here (Click the raw button)) into your existing project.
+It alread contain some code for parsing the program parameters:
+
public static void main(String[] args) throws IOException {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+System.out.println("Started with the following arguments:");
+for (String arg : args) {
+System.out.println(arg);
+ }
+
+if (args.length == 1) {
+File file = new File(args[0]);
+if (file.isFile()) {
+// Your code here:
+
+
+ } else {
+System.err.println("Could not find " + file);
+ }
+
+ } else {
+System.out.println("Wrong argcount: " + args.length);
+System.exit(-1);
+ }
+
+
Launch Exercise02 with the one of the files of the data set as an argument (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat)!
Your program should print now the file name you selected:
+
+
Remember to never put file names directly in your code. Your program will then only work on your machine!
+
Let's open this file!
+
if (file.isFile()) {
+// A file should be opened
+ us.hebi.matlab.mat.types.Matrix mat = Mat5.readFromFile(file).getMatrix(0);
+Signal heartSignal = new mt.Signal(mat.getNumElements(), "Heart Signal");
+for (int i = 0; i < heartSignal.size(); ++i) {
+ heartSignal.buffer()[i] = mat.getFloat(i);
+ }
+ heartSignal.show();
+
+
+} else if (file.isDirectory()) {
+
+
You should now see the signal. However, this plot does not have any labels with physical units attached.
+We will change that later.
+
+
Extension of Signal.java
+
4 Points
+
To analyze this and other signals, we will extend our Signal class.
+Please implement the following methods in Signal.java that calculate some descriptive properties of the signal:
+
public float min() //< lowest signal value
+public float max() //< largest signal value
+public float sum() //< sum of all signal values
+public float mean() //< mean value of the signal
+public float variance() //< variance of the signal
+public float stddev() //< standard deviation of the signal
+
+
Test the methods in your main function and check whether the calculated values seem plausible
+by looking at your plot and printing the calculated values.
+
Physical Dimensions
+
1 Points
+
The code for this section belong to Signal.java
+
In the last exercise, we treated signals as pure sequence of numbers without any physical dimensions.
+But for medical measurements physical dimensions are important.
+We want to extend our plot to look like this with the horizontal axis labeled with seconds:
+
+
To do this we will add a new member to our signal that's describing the physical distance between two samples
+
protected float spacing = 1.0f; //< Use 1.0f as a default when we don't set the physical distance between points
+
+
Add also a setter and getter method
+
public void setSpacing(float spacing)
+public float spacing()
+
+
Read in the discription of the data set the sampling frequency of the signal
+and use it to calculate the spacing between two samples. Set this property setSpacing in the main method.
+
Next, we want to change show() to regard our spacing and to accept a ij.gui.Plot so that we can set the axis of our plot.
+
public void show(Plot plot) {
+DisplayUtils.showArray(buffer, plot, /*start of the signal=*/0.f, spacing);
+ }
+
+
Because we are lazy, we can still keep the original usage of show()
+
public void show() {
+DisplayUtils.showArray(buffer, name, , /*start of the signal=*/0.f, spacing);
+ }
+
+
Please create an instance of ij.gui.Plot in the main method of Exercise02 with descriptive labels for both axis and use if for heartSignal.show(...).
+
+
// Constructs a new Plot with the default options.
+Plot plot = new Plot("chosee title here", "choose xLabel here", "choose yLabel here")
+heartSignal.show(plot);
+
+//... add here more plotting stuff
+
+plot.show()
+
+
Determine the Heart Frequency
+
5 Points
+
The remainder of this exercise will be implemented in Exercise02.java
+
Create a file src/main/java/lme/HeartSignalPeaks.java with following content
+
package lme;
+
+import java.util.ArrayList;
+
+public class HeartSignalPeaks {
+public ArrayList<Double> xValues = new ArrayList<Double>();
+public ArrayList<Double> yValues = new ArrayList<Double>();
+}
+
We now want to find the peaks of the heart signal. We do that by finding local maxima within region that are above a certain
+threshold (here in blue).
+Find a good value of this threshold so that all peaks are above this value.
+You may use mean(), max(), min() to calculate it.
+You can see your threshold by ploting it:
+
plot.setColor("blue");
+ plot.add("lines", new double[] { 0, /* a high value */10000 }, new double[] { threshold, threshold });
+
+
+
Implement the following method that finds all peaks of the signal.
+
public static lme.HeartSignalPeaks getPeakPositions(mt.Signal signal, float threshold)
+
+
To determine the signal peaks, one can use normal maximum search over the signal values.
+Save the found maximum value (i.e. signal amplitude) in x(max) and
+the location of maximum (i.e. the time at which the peak occurs) in y(arg max).
+
You can implement the peak finding method as follows:
+
+
+
Loop over the signal and at each index
+
+
+
Use boolean variable to determine if the current signal value is above the threshold.
+
+
+
If the previous signal value was above the threshold (i.e boolean value was true), and the current value is below threshold (i.e boolean value is false)
+
+
+
Add the previous signal value as a instance of HeartSignalPeaks (like peaks.xValues and peaks.yValues)
+
+
+
This is a suggested workflow, but feel free to use your own ideas to efficently find the peaks of the signal.
You can use that signal to determine the mean cycle duration (peakIntervals.mean()), the mean heart frequency ((1. / intervals.mean())) and
+beats per minute (60. * 1. / intervals.mean()). Print those values!
+
Summary of tasks
+
To summarize the list of tasks that needs to be implemented to complete this exercise
+
+
Set the file path correctly to load the signal into your program (Ensures you can load the signal inside the program)
+
Add labels to the plot, include spacing variable in signal class for visualizing plots in physical dimensions.
+
Implement methods to compute statistical measures (like mean, median,...). (Use the formula provied in lecture/exercise slides)
+
Determine the threshold (follow the description provided here)
+
Find the peaks (follow the description provided here)
+
Calculate intervals between the peaks
+
+
Note
+
While setting file path as arguments, add "path" if there are spaces in file name since java parses space as new arguments.
+
Bonus
+
This is not required for the exercise.
+
Run Exercise02 with other files of the data set as an argument.
+What is the meaning of the mean value and the variance of time distance between the peeks?
+How do signals with low variance in the peak distances look like and how signals with high variance?
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Images and 2-d Convolution
+
In this exercise, we finally to work with images. It's time to update the file src/main/java/lme/DisplayUtils.javato the newest version.
+
This should provide you the following methods to work with images:
+
// Open a file
+public static mt.Image openImage(String path)
+
+// Download and open a file from the internet
+public static mt.Image openImageFromInternet(String url, String filetype)
+
+// Save an image to a file
+public static void saveImage(mt.Image image, String path)
+
+// Show images
+public static void showImage(float[] buffer, String title, int width)
+public static void showImage(float[] buffer, String title, long width, float[] origin, double spacing, boolean replaceWindowWithSameName)
+
+
+
They all work with the class mt.Image so let's create it!
+
Before that, add the following two methods to your Signal class (they are used by the tests of this exercise):
PS: The method addNoise is also useful to test your mean and standardDeviation calculation in exercise 2.
+Create a long signal and add noise with a specific mean and standardDeviation.
+The result of your mean and standardDeviation method should be approximatelly the same.
+
mt/Image.java
+
4 Points
+
The code for this section should go to src/main/java/mt/Image.java
+
Our goal is to share as much code with our mt.Signal class. So mt.Image will be a subclass of mt.Signal.
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+import lme.DisplayUtils;
+
+public class Image extends Signal {
+
+
+}
+
+
mt.Image has five members (apart from the ones inherited by mt.Signal).
+
// Dimensions of the image
+protected int width;
+protected int height;
+
+// Same as Signal.minIndex but for X and Y dimension
+protected int minIndexX;
+protected int minIndexY;
+
+// For exercise 4 (no need to do anything with it in exercise 3)
+protected float[] origin = new float[]{ 0, 0 };
+
+
And two constructors:
+
// Create an image with given dimensions
+public Image(int width, int height, String name)
+
+// Create an image with given dimensions and also provide the content
+public Image(int width, int height, String name, float[] pixels)
+
+
As shown in the exercise slides, we will store all the pixels in one array, like we did in Signal.
+The array should have the size width * height.
+minIndexX,minIndexY should be 0 for normal images.
+
+
+
Call the constructors of the super class Signal in the constructors of Image.
+You can call the constructor of a super class by placing super(...) with the respetive arguments in the first line of the constructor of the subclass.
+The constructor public Image(int width, int height, String name, float[] pixels) does not need to create its own array (take pixels for buffer).
+But you can check whether pixels has the correct size.
+
Let's also provide some getters!
+
// Image dimensions
+public int width()
+public int height()
+
+// Minimum and maximum indices (should work like Signal.minIndex/maxIndex)
+public int minIndexX()
+public int minIndexY()
+public int maxIndexX()
+public int maxIndexY()
+
+
atIndex and setAtIndex should work like in Signal except that they now have two coordinate indices.
+atIndex should return 0.0f if either the x or y index are outside of the image ranges.
+
public float atIndex(int x, int y)
+public void setAtIndex(int x, int y, float value) {
+
+
Remember how we calculated the indices in the exercise slides. You have to apply that formula in atIndex/setAtIndex.
+
+
+
Add the method show to display the image
+
public void show() {
+DisplayUtils.showImage(buffer, name, width(), origin, spacing(), /*Replace window with same name*/true);
+ }
+
+
Open the image pacemaker.png in a file src/main/java/exercise/Exercise03 (in the same project as previous exercise):
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package exercises;
+
+import mt.GaussFilter2d;
+import mt.Image;
+
+public class Exercise03 {
+public static void main(String[] args) {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+
+Image image = lme.DisplayUtils.openImageFromInternet("https://mt2-erlangen.github.io/pacemaker.png", ".png");
+ image.show();
+
+ }
+}
+
Like in Exercise 1, we want to be able to convolve our image signal.
+Infact, we will learn a lot of new ways to process images.
+Often, we need to create an output image of same size.
+Let's create an interface (src/main/java/mt/ImageFilter.java) for that, so we only need to implement this once.
The code for the convolution should go to src/main/java/mt/LinearImageFilter.java
+
Ok. Now the convolution. The class has already a method that we will need later. It uses your sum method.
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+public class LinearImageFilter extends Image implements ImageFilter {
+
+public void normalize() {
+double sum = sum();
+for (int i = 0; i < buffer.length; i++) {
+ buffer[i] /= sum;
+ }
+ }
+}
+
+
Create a constructor for it. Recall how we implemented LinearFilter!
+minIndexX and minIndexY need to be set to $-\lfloor L_x/2 \rfloor$ and $-\lfloor L_y/2 \rfloor$ when $L_x$ is the
+filter's width and $L_y$ the filter's height.
+
public LinearImageFilter(int width, int height, String name)
+
+
Convolution in 2-d works similar to convolution in 1-d.
Remember to use atIndex and setAtIndex to get and set the values.
+Implement the convolution in the method apply.
+The result image was already created by our interface ImageFilter.
The code for the Gauss filter should go to src/main/java/mt/GaussFilter2d.java.
+
The Gauss filter is a LinearImageFilter with special coefficients (the filter has the same height and width).
+
// <your name> <your idm>
+// <your partner's name> <your partner's idm> (if you submit with a group partner)
+package mt;
+
+public class GaussFilter2d extends LinearImageFilter {
+
+}
+
+
It has the following constructor
+
public GaussFilter2d(int filterSize, float sigma)
+
+
In the constructor, set the coefficients according to the unormalized 2-d normal distribution with standard deviation $\sigma$ (sigma).
+Math.exp is the exponetial function. Use setAtIndex: $x$ should run from minIndexX to maxIndexX and $y$ from minIndexY to maxIndexY.
Call normalize() at the end of the constructor to ensure that all coefficients sum up to one.
+
Test your Gauss filter in Exercise03.java.
+Use arbitray values for sigma and filterSize.
+The Gauss filter will blur your input image clearly if you chose a large value for sigma.
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Image Transformations
+
In the previous exercises, we built a Signal and Image class for performing basic operations on the
+input data. We also implemented various filters to process the data and remove noise.
+In this exercise we will build on top of the image class and implement methods for performing image transformations.
+
In many medical applications there is a need to align two images so that we
+can combine the information between the images. This can be due to the images coming from
+different modalities like (CT and MRI) or in scenarios were you have an patient data at from
+different time (before and after an surgery) and you want to compare between these two images.
+In all these scenarios we use image registration bring the different images together.
+
In the below image, two x-ray views (1) and (2) are fused together to obtain the combined view(3)
+which produces more information for diagnosis. This is achieved using image registration between view(1) and view
+
One of the crucial components of image registration is image transformations.
+In this exercise we will implement basic image transformations. Additionally, we need to implement an
+interpolation method to find out the image intensity values at the transformed coordinates.
+
+
Overview of tasks
+
+
We will implement the following tasks for this exercise.
+
+
Helper functions (a. Image origin, b. Interpolation)
+
Image Transformation (a. Translation, b. Rotation, c. Scaling)
+
+
We introduce the basic theory about image transformations in theoretical background section.
+Please read the theory before proceeding since we don't re-introduce everything in the task description.
For Exercise 4 we provide a GUI that displays the image with different image transformation options.
+
+
+
+
Once you have all the transformations implemented you should be able to adjust the sliders and perform the desired transformations in an interactive manner.
+
+
+
The transformations requires an origin point about which we perform all the transformation.
+
+
+
Extend the Image class with these three methods
+
+
+
// store the origin points x,y as
+// a class variable
+public void setOrigin(float x, float y)
+
+// the origin() returns the {x,y} as float
+// array from the stored origin class variable.
+public float[] origin()
+
+// Sets the origin to the center of the image
+public void centerOrigin()
+
+
+
To ensure that everything is running, run the main function.
+
We already set the origin point for you in the file src/main/java/exercises/Exercise04.java
+
To ensure that everything is running, run the main function of Exercise04.
+
+
1. Image interpolation
+
4 Points
+
+
+
Since the image transformations heavily relies on the interpolation, we first implement the interpolation method by extending the Image class with the following method:
+
+
+
public float interpolatedAt(float x, float y)
+
+
+
The method takes in a physical $(x,y)$ coordinate and returns the image intensity at that position.
+We use bilinear interpolation to find the value at $(x,y)$ (described in the theory).
+
+
+
We can rewrite the interpolation equation using the linear interpolation formula when we want to interpolate between two points $x_1,x_2$ with function value $f(x_1),f(x_2)$ to find out the function value $f(x)$ at $x$.
Since we already know the difference $x_2 - x_1$ is either 1.0 if we have a pixel spacing of 1.0 or pixel spacing, we can simplify the above equation as follows:
+
+
$$f(x) = f(x_1) + (x-x_1) (f(x_2) - f(x_1))$$
+
+
+
+
You can use the function below to compute linear interpolation between two points $x_1,x_2$ at $x$
+
+// Definition of arguments
+// diff_x_x1 = x - x_1 compute the difference between point x and x_1
+// fx_1 = f(x_1), pixel value at point x_1
+// fx_2 = f(x_2), pixel value at point x_2
+
+float linearInterpolation(float fx_1, float fx_2, float diff_x_x1) {
+return fx_1 + diff_x_x1 * (fx_1 - fx_2);
+ }
+
+
+
+
+
We now have an way to interpolate between two points in 1D. We need to extend this to 2D case such that we can use
+it for interpolating values in our image. An illustration of how this can be done is
+already given in the theory section.
+
+
+
Implementation detail We describe here possible way to implement the interpolation scheme.
+
+
+
Find the 4 nearest pixel indices, for the given physical coordinate $(x,y)$. To do, this you have to transform
+the physical coordinate to the index space of the image.
+
+
+
Hint: In physical space all the values of $x$ and $y$
+are computed from origin. So we just need to subtract the origin from the coordinates for this correction.
+
x -= origin[0]
+y -= origin[1]
+
+
+
+
Pixel spacing also alters the physical coordinates and needs to be corrected for.
+This can be done using just by dividing each coordinate by the pixel spacing.
+
x /= spacing;
+y /= spacing
+
+
+
+
Hint: Since each pixel is a unit square you can round up and down each coordinate ($x$ and $y$) separately
+to get the 4 nearest pixels coordinates.
+
+
+
Interpolate along an axis (here we choose the x-axis) initially using the linear interpolation
+function to obtain intermediate points.
+
+
+
Now interpolate along the intermediate points (i.e you are interpolating along y-axis)
+
+
+
Note: Take care of image origin and pixel spacing for the input coordinates before you perform any of the steps.
+Also, always use atIndex and setIndex for accessing the image values.
+This ensures that we handle the values at boundary correctly.
+
+
+
+
+
Example:
+Here we look at a single point to understand how to implement our algorithm
+
+
+
If we have an input $(x,y) = (0.4,0.4)$, then the 4 nearest pixel coordinates are $(0,0)$,$(1,0),(1,1),(0,1)$
+
+
+
Interpolating the values between the points $a = (0,0)$, $b = (1,0)$, find the intermediate
+value at point $I_1 = (0.4,0)$.
+
+
+
Similarly interpolate between $c = (0,1)$ and $d = (1,1)$ to find the intermediate value at point $I_2 = (0.4,1)$.
+
+
+
Now we can just use the values at the intermediate points $I_1 = (0.4,0)$ and $I_2 = (0.4,1)$ and
+perform a linear interpolation in the y direction to obtain the final result at $(0.4,0.4)$.
+
+
+
+
+
2. Image Transformation
+
5 Points
+
Now we can start with the implementation of ImageTransformer class.
+
+
The class consists of the following member functions for translation
Also use the interface ImageFilter abstract class which you have implemented in the previous exercises.
+This can be done using implements keyword.
+
+
+
Add the method apply(Image input,Image output) which takes in two variables input and
+output of Image class type. The input variable provides the input image to our transformer class.
+The output variable is where the transformed image is stored.
+
+
+
Consider each pixel in the image with index $(i,j)$. When we access an image pixel we get
+the pixel intensity stored at the location $(i,j)$.
+
+
+
Here $(i,j)$ represents the image coordinates $(x,y)$ and the pixel value at $(i,j)$ represents $f(x,y)$.
+
+
+
We want to transform $(x,y) \to (x',y')$ and find the pixel value at the new location for a
+given set of input transformation parameters $t_x,t_y,\theta,s$ to transform the input image coordinate $(x,y)$.
+
+
+
Let us go over a possible approach to implement the apply method which
+implements (translation,rotation and scaling). In addition, once we have the transformed coordinates $(x',y')$ we
+interpolate the value at this coordinate to set the output value of the new image.
+
+
+
We can implement the transformations and interpolation using the equations defined
+in the theory section.
+
+
+
However, from the implementation perspective it is much easier to ask what will be my output image value
+at the current position $(x',y')$ for the given transformations parameters.
+
+
+
For this we need to find the input coordinate $(x,y)$ for the given transformation parameters.
+This mapping from $(x',y') \to (x,y)$ is known as the inverse transformation.
+
+
+
Just to recap our current aim is to iterate over the output image along each
+pixel $(i,j)$ (also referred as $(x',y')$) and find the inverse transformation (x,y).
+Once we find $(x,y)$ we can just interpolate the values in the input image at $(x,y)$ and
+set it to the output image value at (x',y').
+
+
+
An example code to accomplish this looks like below:
+
+
+
// We need to compute (x,y) from (x',y')
+// We use xPrime,yPrime in the code to indicate (x',y')
+// Interpolate the values at (x,y) from the input image to get
+float pixelValue = input.interpolatedAt(x,y);
+
+// Set your result at the current output pixel (x',y')
+output.setAtIndex(xPrime, yPrime, pixelValue);
+
+
+
+
+
The inverse transformations can be computed using the following equations.
+
+
+
Translation
+
+
$x = x' - t_x$
+
$y = y' - t_y$
+
+
+
+
Rotation
+
+
$x= x' \cos\theta + y' \sin\theta$
+
$y= - x \sin\theta + y' \cos\theta$
+
+
+
+
Scaling
+
+
$x= \frac{x'}{s}$
+
$y= \frac{y'}{s}$
+
+
+
+
Implementation detail Now you can directly use the above equations to implement translation, rotation and scaling.
+The entire apply method for the ImageTransformer class can be implemented as follows:
+
+
+
Iterate over each pixel in the output image (although they are just the same as input initially).
+
+
+
At each pixel the index $(i,j)$ represents our coordinates $(x',y')$ of the output image
+
+
+
Apply the transformations using the equations described above to find $(x,y)$
+
+
+
Now set the output image value at $(i,j)$ (also referred as (x',y')) from the interpolated values at $(x,y)$
+from the input image.
+
+
+
Use the setIndex() for setting the values of the output image and atIndex() for getting the values
+from input image.
+
+
+
In the above formulation we assume that we have pixel spacing of $spacing = 1.0$ and the
+image origin at $(x_0, y_0) = (0,0)$.
+
+
+
You can extend this to work for different values of pixel spacing and origin.
+
+
+
Hint: Think of pixel spacing as a scaling and origin as a translation transformation.
+(apply both spacing and origin transformation to the input coordinates $(x,y)$ as $(x * px , y * py) + (x_0,y_0))$
Please ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.
+
Each exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.
+
Quanitfying Errors
+
3 Points
+
In Exercise03, we have seen that we can use linear low-pass filters, like the Gauss filter, to reduce
+the amount of noise in images. Let's test that!
+
Add two static methods to the Image class:
+
public static float meanSquaredError(Image a, Image b);
+public static float psnr(Image a, Image b, float maxValue); // maxValue is 255 for PNG images
+
Static also means that you will use them like float mse = Image.meanSquaredError(imageA, imageB);.
+
Open a test image and add some noise using addNoise in exercise.Exercise05 (src/main/java/exercise/Exercise05).
+
(new ij.ImageJ()).exitWhenQuitting(true);
+Image original = lme.DisplayUtils.openImageFromInternet("https://mt2-erlangen.github.io/shepp_logan.png", ".png");
+ original.setName("Original");
+
+Image noise = new Image(original.width(), original.height(), "Noise");
+ noise.addNoise(0.f, 10.f);
+
+Image noisyImage = original.minus(noise); // You might also implement your own `plus` ;-)
+
+
Apply a Gauss filter (choose a good filterSize and sigma) on the noise image and compare the result with the original image.
+Can the error be reduced in comparision to the unfiltered noisy image? Also take a look on the error images that you can
+calculate using your minus method of the class Image.
+
+
Hint: You can use a for-loop to try out different values for sigma.
+
Hint: You do not need to submit written answers to the questions in the text. Just do the correponding experiments!
+
+
Non-Linear Filters
+
3 Points
+
A quality criterion for medical images are sharp edges.
+However, though the Gauss filter reduces the noise it also blurs out those edges.
+In this exercise, we try to mitigate that problem using non-linear filters.
+
Non-linear filters calculate similar to a convolution each pixel value in the output from a neighborhood of the
+input image. Remember the sliding window from exercise 3? Non-linear filters do exactly the same.
Create a class mt.NonLinearFilter in the file src/main/java/mt/NonLinearFilter.java:
+
// Your name here <your idm>
+// Your team partner here <partner's idm>
+package mt;
+
+import lme.WeightingFunction2d;
+import lme.NeighborhoodReductionFunction;
+
+public class NonLinearFilter implements ImageFilter {
+
+// Name of the filter
+protected String name;
+// Size of the neighborhood, 3 would mean a 3x3 neighborhood
+protected int filterSize;
+// Calculates a weight for each neighbor
+protected WeightingFunction2d weightingFunction = (centerValue,neighborValue,x,y) -> 1.f;
+// Calculates output value from neighbors and weights
+protected lme.NeighborhoodReductionFunction reductionFunction;
+
+public NonLinearFilter(String name, int filterSize) {
+this.filterSize = filterSize;
+this.name = name;
+ }
+
+ @Override
+public String name() {
+return name;
+ }
+}
+
+
As you can see, NonLinearFilter uses two interfaces. You can copy them into your src/main/java/lme/ folder.
+
// in file `src/main/java/lme/WeightingFunction2d.java`
+package lme;
+
+@FunctionalInterface // Does nothing. But Eclipse is happier when it's there.
+public interface WeightingFunction2d {
+// Assigns a neighbor (shiftX, shiftY) a weight depending on its value and the value of the pixel in the middle of the neighborhood
+float getWeight(float centerValue, float neighborValue, int shiftX, int shiftY);
+}
+
+
and
+
// in file `src/main/java/lme/NeighborhoodReductionFunction.java`
+package lme;
+
+@FunctionalInterface
+public interface NeighborhoodReductionFunction {
+// Calculates the output pixels from the values of the neighborhood pixels and their weight
+float reduce(float[] values, float[] weights);
+}
+
The method should calculate each output pixel from a neighborhood. So
+
+
Create an array to hold the values of the neighborhood pixels. How many neighborhood pixels are there?
+
Loop over each output pixel
+
+
Fill the array of neighborhood pixels with values from the input image (needs two inner loops)
+
Use this.reductionFunction.reduce to determine the value of the output pixel. You can use null for the second parameter for now (we will implement weights later).
+
Save the value to the output image (using setAtIndex).
+
+
+
+
Overall, the method should look very similar to your LinearImageFilter.apply method.
+
To test your method, implement a MedianFilter in a file src/main/mt/MedianFilter.java as a subclass of NonLinearFilter.
+
// Your name here
+// Team partner's name here
+package mt;
+
+import java.util.Arrays;
+
+public class MedianFilter extends NonLinearFilter {
+public MedianFilter(int filterSize) {
+// TODO:
+super(...);
+ reductionFunction = ...;
+ }
+}
+
+
The MedianFilter is a LinearImageFilter with
+reductionFunction(values, weights) -> { Arrays.sort(values); return values[values.length / 2]; }
+(it sorts the values and takes the one in the middle).
+All you need to do is to call the super constructor and set reductionFunction.
+
Does the median filter also reduce the noise in the image?
The bilateral assign a weight to each neightborhood pixel.
+So modify your NonLinearFilter.apply method that it also creates a weights array and uses weightingFunction.getWeight to
+fill it. reductionFunction should now also be called with the weights array.
+
The bilateral has to parameters $\sigma_{\text{value}}$ and $\sigma_{\text{spatial}}$.
+For large values of $\sigma_{\text{spatial}}$ the bilateral filter behaves like a Gauss filter.
+Initialize gaussFilter in the constructor. Set weightingFunction so that the weights $w_s$ of the Gauss filter are returned.
+Set reductionFunction. It should multiply each of the values with its weight and then sum the results up.
+
Your BilateralFilter should now behave like a Gauss filter. Does it pass the test in GaussFilter2dTests when you
+use BilateralFilter instead of GaussFilter2d?
+
Edge-Preserving Filtering
+
2 Points
+
To make our bilateral filter edge preserving, we have to use also $\sigma_{\text{value}}$.
+The value weight $w_v$ is calculated as follows
In the last exercise, we want to have a look at edge detection and segmentation.
+
Edge Detection
+
7 Points
+
Open a test image in a new file src/main/java/exercise/Exercise06.java.
+
// Your name
+// Team parnter name
+package exercises;
+
+import lme.DisplayUtils;
+import mt.LinearImageFilter;
+
+public class Exercise06 {
+public static void main(String[] args) {
+ (new ij.ImageJ()).exitWhenQuitting(true);
+ mt.Image cells = lme.DisplayUtils.openImageFromInternet("https://upload.wikimedia.org/wikipedia/commons/8/86/Emphysema_H_and_E.jpg", ".jpg");
+
+ }
+}
+
+
We will use the Sobel Filter, to estimate the gradient of the image.
+The Sobel Filter uses two filter kernels. One to estimate the x-component of the gradient and one for the y-component.
+
+
Create two LinearImageFilters with those coeffients. You can use filterX.setBuffer(new float[]{...})
+or setAtIndex to do that.
+Filter the original image with both of them!
+
+
+
+
+
+
+
X component of gradient $\delta_x$
+
Y component of gradient $\delta_y$
+
+
+
You should now have two intermediate results that can be interpreted as the x-component $\delta_x$
+and y-component $\delta_y$of the estimated gradient for each pixel.
+
Use those two images to calculate the norm of the gradient for each pixel!
Find a good threshold and set all gradient magnitude values to zero that are below this values and all other to 1.f to
+obtain an image like this with a clear segmentation in edge pixels and non-edge pixels.
For histologic examinations colored subtances called stains are used to enhance the constrast
+of different portions of the tissue.
+
Use a suitable threshold to segment the individual sites with high contrast (0 background, 1 contrasted cells).
+You can use the following method to overlay your segmentation with the original image.
+
// In lme.DisplayUtils
+public static void showSegmentedCells(mt.Image original, mt.Image segmented)
+// You may also try `showSegmentedCells(cells, segmentation, true);` with the newest version of DisplayUtils
+
+
+
Improving your Segmentation
+
This is optional and not required for the exercise.
+You might want to go directly to the evaluation of this year's exercises:
+https://forms.gle/2pbmuWtmeTtaVcKL7
+
You may notice that by just choosing a threshold you may not be able to separate each individual structure.
+
+
You can try out some operations from the menu Process > Binary while you have your 0/1 segmentation focused.
+You have to convert to 8-bit first. E.g.
We redesigned the exercises from scratch for this semester.
+Therefore, some of the exercises might have been difficult to understand or too much work.
+We are glad for your feedback to help future semesters' students😊:
+https://forms.gle/2pbmuWtmeTtaVcKL7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archive/WS2021/exercise3demo.png b/archive/WS2021/exercise3demo.png
new file mode 100644
index 00000000..657100cd
Binary files /dev/null and b/archive/WS2021/exercise3demo.png differ
diff --git a/archive/WS2021/filter-min-max.png b/archive/WS2021/filter-min-max.png
new file mode 100644
index 00000000..d7b6506d
Binary files /dev/null and b/archive/WS2021/filter-min-max.png differ
diff --git a/archive/WS2021/filtering.png b/archive/WS2021/filtering.png
new file mode 100644
index 00000000..96bb1488
Binary files /dev/null and b/archive/WS2021/filtering.png differ
diff --git a/archive/WS2021/find_peaks.png b/archive/WS2021/find_peaks.png
new file mode 100644
index 00000000..c64c98a7
Binary files /dev/null and b/archive/WS2021/find_peaks.png differ
diff --git a/archive/WS2021/heartbeat.png b/archive/WS2021/heartbeat.png
new file mode 100644
index 00000000..34401aca
Binary files /dev/null and b/archive/WS2021/heartbeat.png differ
diff --git a/archive/WS2021/histogramMIP.png b/archive/WS2021/histogramMIP.png
new file mode 100644
index 00000000..3d53936f
Binary files /dev/null and b/archive/WS2021/histogramMIP.png differ
diff --git a/archive/WS2021/image_constructor.png b/archive/WS2021/image_constructor.png
new file mode 100644
index 00000000..7533cef9
Binary files /dev/null and b/archive/WS2021/image_constructor.png differ
diff --git a/archive/WS2021/img_transform_theory/BilinearInterpolation.png b/archive/WS2021/img_transform_theory/BilinearInterpolation.png
new file mode 100644
index 00000000..cf91870b
Binary files /dev/null and b/archive/WS2021/img_transform_theory/BilinearInterpolation.png differ
diff --git a/archive/WS2021/img_transform_theory/Comparison_of_1D_and_2D_interpolation.png b/archive/WS2021/img_transform_theory/Comparison_of_1D_and_2D_interpolation.png
new file mode 100644
index 00000000..3f11c70b
Binary files /dev/null and b/archive/WS2021/img_transform_theory/Comparison_of_1D_and_2D_interpolation.png differ
diff --git a/archive/WS2021/img_transform_theory/index.html b/archive/WS2021/img_transform_theory/index.html
new file mode 100644
index 00000000..c62e3960
--- /dev/null
+++ b/archive/WS2021/img_transform_theory/index.html
@@ -0,0 +1,297 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Image transformation theory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Consider a point $\mathbf{x}=(x,y)$ in the 2D space. Then
+we can define translation, rotation and scaling
+using the following equations which maps the points from $\mathbf{x} \to \mathbf{x}'$ where $\mathbf{x}' = (x',y)'$ is the new transformed coordinates.
+
Translation
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = x + t_x$
+
$y' = y + t_y$.
+
+
This can also be written in vector notation as follows:
+
+
$\mathbf{x}' = \mathbf{x} + \mathbf{t}$ where $\mathbf{t} = (t_x, t_y)$
+
+
+
Rotation
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = x cos\theta + y sin\theta$
+
$y' = -x sin\theta + y cos\theta$
+
+
+
+
Scaling
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = sx$
+
$y' = sy$.
+
+
+
+
+
We can also chain the different transformations and compute the transformed coordinate using a single equation
+
$$x' = s (x \cos\theta + y \sin\theta ) + t_x$$
+$$y' = s(-x \sin\theta + y \cos\theta) + t_y$$
For more details about image transformations, you can
+also check out the computer vision book by Richard Szeliski.
+A free pdf is available on the website.
+
Image interpolation
+
Let us consider an example image
+transformation. Initially we have an unit square with its left corner placed at the origin (0,0). Assume that we have image intensity values at the
+corners of the unit square at a = (0,0), b =(0,1),
+c = (1,1), d = (0,1).
+
We apply a small translation $\mathbf{t} = (0.5,0.5)$ to the square. As you can see in the image, now our left corner point is at $a' = (0.5,0.5)$.
+Since we don't have the value at this point we are forced to approximate the value from the information available to us. This is the main
+reason for implementing image interpolation function as image transformations can always lead to coordinates for which we don't have any value and we approximate the value using the neighbourhood information.
+
+
The way in which we use the neighbouring information governs the quality of the interpolated image. The different types of interpolation are as follows:
+
+
Nearest neighbour
+
Bilinear
+
Bi-cubic
+
+
Illustration of different types of interpolation
+
The image below shows how the different types of interpolation works. The discrete points are the places where we know the function value and
+the lines connecting these points represents the interpolated function values.
We will implement only bilinear interpolation
+for our Image class.
+Lets dive a bit deeper into the bilinear
+interpolation and look at the how the values are interpolated using this method.
Consider the above image where the red dots ($Q_{ij}$) indicate the discrete points where we know the function value. We want to approximate the function value at point $P$.
+
Consider the points(red dots) in the above image:
+
$$Q_{11} = (x_1,y_1), Q_{21} = (x_2,y_1)$$
+
$$ Q_{12} = (x_1,y_2), Q_{22} = (x_2,y_2)$$
+
Assume that each of these points $Q_{ij}$ corresponds to an image pixel with intensity values.
+
Now we need to find the image intensity value at point $P= (x,y)$ which is in between the points $Q_{ij}$
+
Let us consider one coordinate at
+a time (i.e. $x_i$ or $y_i$) for interpolation.
+Here we intially interpolate along the $x$-axis.
+So now our aim is to find values at $P(x,y_i)$.
+(i.e. find intermediat values $R_i (x,y_i)$. We have two values of $y_i$ so we can find two intermediate values.)
+
We can obtain two such values by interpolating along
+$Q_{11}, Q_{21}$ and find out the intermediate value as $R_1$ and between $Q_{12}, Q_{22}$ and find out the intermediate value $R_2$.Look at the image of how we just interpolate along the line.
+
We can directly use the linear interpolation equation to find out the values of $f(R_1)$ and $f(R_2)$
Once we have the values at $R_1 = (x,y_1)$ and $R_2 = (x,y_2)$ we can again use the same linear interpolation formula along the $y$-axis and find the function value $f(P)$ at $P=(x,y)$.
+
This way we can interpolate(approximate) any values (x,y) if we know the neighbouring values. However when we actually implement the method we also need to find out the neighbouring values on our own as they are not provided.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archive/WS2021/img_transform_theory/interpolation_img.png b/archive/WS2021/img_transform_theory/interpolation_img.png
new file mode 100644
index 00000000..b5d0b202
Binary files /dev/null and b/archive/WS2021/img_transform_theory/interpolation_img.png differ
diff --git a/archive/WS2021/img_transform_theory/rotation.png b/archive/WS2021/img_transform_theory/rotation.png
new file mode 100644
index 00000000..42d779f7
Binary files /dev/null and b/archive/WS2021/img_transform_theory/rotation.png differ
diff --git a/archive/WS2021/img_transform_theory/scaling.png b/archive/WS2021/img_transform_theory/scaling.png
new file mode 100644
index 00000000..ec0da6fa
Binary files /dev/null and b/archive/WS2021/img_transform_theory/scaling.png differ
diff --git a/archive/WS2021/img_transform_theory/translation.png b/archive/WS2021/img_transform_theory/translation.png
new file mode 100644
index 00000000..4cf4afed
Binary files /dev/null and b/archive/WS2021/img_transform_theory/translation.png differ
diff --git a/archive/WS2021/img_transform_theory/types_trans_img_selzki.png b/archive/WS2021/img_transform_theory/types_trans_img_selzki.png
new file mode 100644
index 00000000..857158fb
Binary files /dev/null and b/archive/WS2021/img_transform_theory/types_trans_img_selzki.png differ
diff --git a/archive/WS2021/img_transform_theory/types_trans_mat_szeliski.png b/archive/WS2021/img_transform_theory/types_trans_mat_szeliski.png
new file mode 100644
index 00000000..4125b796
Binary files /dev/null and b/archive/WS2021/img_transform_theory/types_trans_mat_szeliski.png differ
diff --git a/archive/WS2021/import_eclipse/1.png b/archive/WS2021/import_eclipse/1.png
new file mode 100644
index 00000000..8c615f1a
Binary files /dev/null and b/archive/WS2021/import_eclipse/1.png differ
diff --git a/archive/WS2021/import_eclipse/2.png b/archive/WS2021/import_eclipse/2.png
new file mode 100644
index 00000000..6c081115
Binary files /dev/null and b/archive/WS2021/import_eclipse/2.png differ
diff --git a/archive/WS2021/import_eclipse/3.png b/archive/WS2021/import_eclipse/3.png
new file mode 100644
index 00000000..6ecb4d48
Binary files /dev/null and b/archive/WS2021/import_eclipse/3.png differ
diff --git a/archive/WS2021/import_eclipse/4.png b/archive/WS2021/import_eclipse/4.png
new file mode 100644
index 00000000..6b16cb41
Binary files /dev/null and b/archive/WS2021/import_eclipse/4.png differ
diff --git a/archive/WS2021/import_eclipse/5.png b/archive/WS2021/import_eclipse/5.png
new file mode 100644
index 00000000..62719806
Binary files /dev/null and b/archive/WS2021/import_eclipse/5.png differ
diff --git a/archive/WS2021/import_eclipse/6.png b/archive/WS2021/import_eclipse/6.png
new file mode 100644
index 00000000..37699e85
Binary files /dev/null and b/archive/WS2021/import_eclipse/6.png differ
diff --git a/archive/WS2021/import_eclipse/eclipse_gradle.png b/archive/WS2021/import_eclipse/eclipse_gradle.png
new file mode 100644
index 00000000..0e94addf
Binary files /dev/null and b/archive/WS2021/import_eclipse/eclipse_gradle.png differ
diff --git a/archive/WS2021/import_eclipse/execute.png b/archive/WS2021/import_eclipse/execute.png
new file mode 100644
index 00000000..c3553a76
Binary files /dev/null and b/archive/WS2021/import_eclipse/execute.png differ
diff --git a/archive/WS2021/import_eclipse/imagej.png b/archive/WS2021/import_eclipse/imagej.png
new file mode 100644
index 00000000..124d1aab
Binary files /dev/null and b/archive/WS2021/import_eclipse/imagej.png differ
diff --git a/archive/WS2021/import_eclipse/index.html b/archive/WS2021/import_eclipse/index.html
new file mode 100644
index 00000000..a5d23907
--- /dev/null
+++ b/archive/WS2021/import_eclipse/index.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Import a Gradle project with Eclipse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
On Windows, download the latest Java version (14.1) from Oracle.
+On Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.
+At least Java 11 is required.
Chose path of the downloaded project and click Next
+
+
+
+
Grab a coffee while it's downloading ImageJ
+
+
+
+
Try to run Exercise01
+
+
+
+
You are seeing red squiggles, you found a bug in a Eclipse plugin. Upgrade it in the Eclipse Marketplace!
+
+
+
+
Search for gradle build! Then, click on the Installed button of "Buildship Gradle Integration.
+
+
+
+
... and click on Update! This should solve the bug after a restart.
+
+
+
+
You should now see ImageJ when you start Exercise01.
+
+
+
+
If you're still facing problems: please also check whether a valid Java Runtime Enviroment was found by right-clicking on the project folder
+(if it still has red crosses). Select Properties -> Java Build Path. Sometimes Eclipse does not find your Java
+installation. You can select it there.
On Windows, download the latest Java version (14.1) from Oracle.
+On Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.
+At least Java 11 is required.
+
+
+
You can get IntelliJ from here. There's a free community edition and you can also
+unlock the Ultimate Edition when applying with your FAU email adress here.
During this semester we will learn the basic of magnetic resonance imaging (MRI) and how we can use post-processing methods on these images.
+We will focus on the post-processing method called segmentation and will take a look on how to evaluate our method.
+
+
Find an informative title for your project report. "Project Report" and "Introduction" are not good titles.
+
What is magnetic resonance imaging?
+When and from whom was it introduced? What kind of electromagnetic radiation is used to acquire the images? How does the radiation interact with the patients body?
+
What are advantages and disadvantages of MRI in comparisson with Computer Tomography(CT). Include at least two advantages and
+two disadvantages.
+
Give a short overview of the contents of the following sections of your project report.
+
Proof all your statements with references. You should use at least four distinct sources in your introduction that are
+not webpages.
+
+
The introduction should not be longer than one page and but at least half a page.
+
Your introduction and conclusion should not contain any images.
In the previous task we implemented a simple segmentation method. However we still need to pass a threshold manually and evaluate it by ourselves.
+To conquer that, we will implement Otsu's method in our PostProcessing class:
+
+public static int Otsu(Image image)
+
+
+
Histogram
+
The method finds the optimal threshold for bimodal histograms. Therefore we need to add another helper method to our PostProcessing class:
+
+public static Signal Histogram(Image image)
+
+
+
We can describe the Histogram as a Signal from our Framework with the size of all possible pixel values of a grey scale images.
+ Before saving the pixel counts of each pixel value to the histogram, the image needs to be normalized to the grey scale pixel values 0-255. Create a function for that:
You can normalize the image with the formula: $I_N=(I-Min)\frac{newMax-newMin}{Max-Min}+newMin$.
+ Hint: Make sure that you have integer pixel values!
+
Now you can iterate over your normalized input image and increase the entry of the histogram according to the pixel value of the image. Due to the fact that the histogram is a Signal we can use the show()) method to display it:
+
+
+
+
+
+
+
MIP Image of Volume1
+
Histogram of the Image
+
+
+
+
Otsu's method
+
The method tries to maximize the following function to find the best threshold: $\sigma_b^2(\theta)=P_1(\theta)P_2(\theta)(\mu_1(\theta)-\mu_2(\theta))^2$
Post-processing of medical images is an important step when working with medical images. We will learn and implement several methods.
+
We will set up a new class mt.PostProcessing for our methods:
+
// Your name <your idm>
+
+package mt;
+
+public class PostProcessing {
+
+ }
+
+
+
In the project report you should answer the following questions:
+
+
What is post-processing in context of image processing?
+
Why is it important? - Give at least two examples.
+
+
Maximum Intensity Projection
+
We are now looking at a specific post-processing method called maximum intensity projection (MIP), which is an important method for magnetic resonance angiography. The method will be used to prepare our MRI Volumes to single images which can be segmented.
+
If you scroll through the image sets, you will see bright spots in the different layers. However, we can not see the connected blood vessels in the brain.
+That's where the MIP come into play. We are going to implement the following method in our PostProcessing class:
The basic mechanism of the MIP is that we are creating a 2D image from our 3D Volume. We are only taking the maximum values of every slice and saving them into our resulting image. We are going through all our different slices and comparing our image values element by element and saving the highest pixel values in our resulting image:
+
+
If we scroll again through our MRA image set we see again only small white areas:
+
+
After we apply our MIP algorithm we can see all the blood vessels!
+
+
Explain in your project report:
+
+
Why and when do we use MRA instead of a normal MRI scan?
+
Why do we need a post-processing method like MIP for this image technique?
+
Why is it useful to use MIP before segmenting our picture?
+
+
Threshold-based Segmentation
+
As mentioned before, we want to segment our MRI Volume after we used the MaximumIntensityProjection method.
+In the beginning we want to implement a simple segmentation method to our PostProcessing class.
Create a New launch configuration with main class exercises.Exercise02
+
+
Set the arguments with the file name in quotes: "path to your data set file" (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat). Don't forget the quotes!
+
Fill in the form with main class exercises.Exercise02 and your file name of the file that you want to open (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat) as programm arguments in quotes!
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archive/WS2021/set_args_intellij/run.png b/archive/WS2021/set_args_intellij/run.png
new file mode 100644
index 00000000..88203fb5
Binary files /dev/null and b/archive/WS2021/set_args_intellij/run.png differ
diff --git a/archive/WS2021/shepp_100.webm b/archive/WS2021/shepp_100.webm
new file mode 100644
index 00000000..8c884a10
Binary files /dev/null and b/archive/WS2021/shepp_100.webm differ
diff --git a/archive/WS2021/shepp_100_cropped.webm b/archive/WS2021/shepp_100_cropped.webm
new file mode 100644
index 00000000..813bb6ca
Binary files /dev/null and b/archive/WS2021/shepp_100_cropped.webm differ
diff --git a/archive/WS2021/shepp_9_cropped.webm b/archive/WS2021/shepp_9_cropped.webm
new file mode 100644
index 00000000..d85c1f47
Binary files /dev/null and b/archive/WS2021/shepp_9_cropped.webm differ
diff --git a/archive/WS2021/shepp_logan.png b/archive/WS2021/shepp_logan.png
new file mode 100644
index 00000000..05a05382
Binary files /dev/null and b/archive/WS2021/shepp_logan.png differ
diff --git a/archive/WS2021/shepp_logan_bilateral.png b/archive/WS2021/shepp_logan_bilateral.png
new file mode 100644
index 00000000..98ad3466
Binary files /dev/null and b/archive/WS2021/shepp_logan_bilateral.png differ
diff --git a/archive/WS2021/shepp_logan_gauss.png b/archive/WS2021/shepp_logan_gauss.png
new file mode 100644
index 00000000..7232232a
Binary files /dev/null and b/archive/WS2021/shepp_logan_gauss.png differ
diff --git a/archive/WS2021/shepp_logan_noisy.png b/archive/WS2021/shepp_logan_noisy.png
new file mode 100644
index 00000000..7764ef7b
Binary files /dev/null and b/archive/WS2021/shepp_logan_noisy.png differ
diff --git a/archive/WS2021/shepp_logan_original.png b/archive/WS2021/shepp_logan_original.png
new file mode 100644
index 00000000..05a05382
Binary files /dev/null and b/archive/WS2021/shepp_logan_original.png differ
diff --git a/archive/WS2021/signal-min-max.png b/archive/WS2021/signal-min-max.png
new file mode 100644
index 00000000..08bc7dac
Binary files /dev/null and b/archive/WS2021/signal-min-max.png differ
diff --git a/archive/WS2021/sinogram.png b/archive/WS2021/sinogram.png
new file mode 100644
index 00000000..40dd3f82
Binary files /dev/null and b/archive/WS2021/sinogram.png differ
diff --git a/archive/WS2021/sinogram_ct_scan.webm b/archive/WS2021/sinogram_ct_scan.webm
new file mode 100644
index 00000000..efb54948
Binary files /dev/null and b/archive/WS2021/sinogram_ct_scan.webm differ
diff --git a/archive/WS2021/sinogram_dot.png b/archive/WS2021/sinogram_dot.png
new file mode 100644
index 00000000..406cf586
Binary files /dev/null and b/archive/WS2021/sinogram_dot.png differ
diff --git a/archive/WS2021/sinogram_rotation.webm b/archive/WS2021/sinogram_rotation.webm
new file mode 100644
index 00000000..219afdb6
Binary files /dev/null and b/archive/WS2021/sinogram_rotation.webm differ
diff --git a/archive/WS2021/smile_extended.png b/archive/WS2021/smile_extended.png
new file mode 100644
index 00000000..ddbe71c3
Binary files /dev/null and b/archive/WS2021/smile_extended.png differ
diff --git a/archive/WS2021/sobel.png b/archive/WS2021/sobel.png
new file mode 100644
index 00000000..341133d9
Binary files /dev/null and b/archive/WS2021/sobel.png differ
diff --git a/archive/WS2021/start_with_args.png b/archive/WS2021/start_with_args.png
new file mode 100644
index 00000000..4f4fa82e
Binary files /dev/null and b/archive/WS2021/start_with_args.png differ
diff --git a/archive/WS2021/tip1.png b/archive/WS2021/tip1.png
new file mode 100644
index 00000000..8c7086c0
Binary files /dev/null and b/archive/WS2021/tip1.png differ
diff --git a/archive/WS2021/tip2.png b/archive/WS2021/tip2.png
new file mode 100644
index 00000000..954301a8
Binary files /dev/null and b/archive/WS2021/tip2.png differ
diff --git a/archive/WS2021/tip3.png b/archive/WS2021/tip3.png
new file mode 100644
index 00000000..9d558e89
Binary files /dev/null and b/archive/WS2021/tip3.png differ
diff --git a/archive/WS2021/transformations.png b/archive/WS2021/transformations.png
new file mode 100644
index 00000000..28dd79fd
Binary files /dev/null and b/archive/WS2021/transformations.png differ
diff --git a/archive/WS2021/volume/index.html b/archive/WS2021/volume/index.html
new file mode 100644
index 00000000..1572bc37
--- /dev/null
+++ b/archive/WS2021/volume/index.html
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Project Work 2 – Volumes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Important: You have to work alone on your project work. No team partners allowed anymore 😔!
+
MR reconstruction for a three-dimensional volume can be done with two different methods. We are using slice selection in this project.
+So we will need one class that represents our volume of the MRI images.
+It turns out that we can interpret our volume just as a list of 2-d images.
+
Explain in you report the method of slice selection:
+
+
Which field of the MRI scanner is used to encode specific positions in the patient?
+
How many of these fields exist and which directions do they cover?
+
How is a specific slice selected?
+
+
This part should be about a quarter to half a page long.
+
+
+
+
+
+
A volume: very much just multiple images stacked one over another
+
+
+
Create a class mt.Volume
+
// Your name <your idm>
+// No team partner... So sad 😢!
+
+package mt;
+
+import java.util.Arrays;
+import java.util.stream.IntStream;
+
+public class Volume {
+// Here we store our images
+protected mt.Image[] slices;
+
+// Dimensions of our volume
+protected int width, height, depth;
+
+// Spacing and origin like for mt.Image
+protected float spacing = 1.f; // spacing is now our voxel size
+protected float[] origin = new float[]{0, 0, 0}; // position of the top-left-bottom corner
+
+// A name for the volume
+protected String name;
+
+}
+
+
Create a constructor. Remember: width, height, depth, name must be set and slices must be created as an array.
+We need depth images of size width $\times$ height for the slices.
+
public Volume(int width, int height, int depth, String name)
+
+
Getters/setters...
+
public int width()
+public int height()
+public int depth()
+public float physicalWidth() // width * spacing()
+public float physicalHeight() // height * spacing()
+public float physicalDepth() // depth * spacing()
+
+public mt.Image getSlice(int z)
+public void setSlice(int z, mt.Image slice)
+
+public float spacing()
+public void setSpacing(float spacing) // should also set spacing also for all slices!
+public String name()
+public float[] origin()
+
+// should set origin to (-0.5 physicalWidth, -0.5 physicalHeight, -0.5 physicalDepth) and call centerOrigin on each slice
+public void centerOrigin()
+
+
We need also another setter Method in our image class:
+
public void setSpacing(float spacing) // set spacing for the image
+
+
+
Now comes the interesting part: visualize the volume!
+You will need to update src/main/java/lme/DisplayUtils.java file and use the following command to visualize the volume.
+
public void show() {
+ lme.DisplayUtils.showVolume(this);
+ }
+
+
We will work for our upcoming post-processing tasks with a magnetic resonance angiography (MRA) dataset. MRA is a special method in MRI to visualize vessels in images. You can download a volume from https://www.nitrc.org/projects/icbmmra.
+
Note: The data set is in the NIfTI (Neuroimaging Informatics Technology Initiative) format, which you need to convert into our .tif format. ImageJ has a Plugin for it, which you would need to install.
+
You can also use one of the three already converted image sets:
The Canny-Edge algorithm is one of the more advanced algorithms to perform edge detection. Unlike primitive approaches, like those you implemented in Task 4, Canny's algorithm leads to clearly defined edges (only one pixel in width) and a significant reduction in false detections (meaning regions of sharp brightness-transition, which are not edges of interest).
+This is achieved through the following process:
+
+
Blurring the image (Gaussian Blur) to reduce noise
+
Determining the image-gradient using the Sobel-kernel (→ Task 4)
+
Determining the gradient-direction for each pixel
+
Performing Non-Maximum-Suppression along the gradient-direction
+
Performing Hysteresis-Thresholding to select edges of intrest
+
+
These steps will be explained further later on.
+
+
5.1: Blurring and Gradient
+
The first part of this task can be implemented directly in the run-method of the Task_5_CannyEdgeDetection-class.
+
To do:
+
+
+
Convert the input-image to a FloatProcessor and apply a gaussian blur.
+
+📝 Note:
+
The $\sigma$-parameter is one of the values you can play around with later on to improve your results. Once you are done, you will be able to set this value via a user-dialog. For now, a good starting point would be the value 2
+
+
+
+
Create 3 new FloatProcessors to store the image-gradient and the derivatives. Use the methods you implemented in Task 4 to apply a Sobel-operator and to calculate the gradient.
+
+
+
+
5.2 Determining Gradient-Directions
+
To calculate the direction of each pixel, you will now implement a new method called getDir.
+The formula for calculating the gradient-direction at a given pixel is:
+
Θ = atan2(Gy , Gx)
+
with Gy and Gx being the values of the respective y- and x-derivatives at the current position.
+
+📝 Note:
+
The gradient-direction provides information about the angle or direction of an edge within the image. At any given point the edge will be perpendicular to the gradient direction. This will become important when it comes to performing Non-Maximum-Suppression (NMS).
+An example:
+
+
white pixels ≙ edge; arrow ≙ gradient-direction
+
+
The atan2-method used to determine the direction returns the angle $\Theta$, that results from converting a cartesian coordinate (x,y) to radians (r,$\Theta$). The angle theta is therefore returned in radians and you will need to convert it to degrees.
+
+
+ ⚠ Important warning: ⚠
+
+ The atan2-method expects coordinates in a standard cartesian coordinate-system (x→ / y↑). Since you are working with images, the y-axis is defined differently (x→ / y↓) and you will therefore need to call the method like this: Math.atan2 (-y, x)
+
+
The getDir-method will determine the gradient-direction for each pixel and then round it to one of the following values: 0°, 45°, 90°, 135°. These stem from the fact that an image is a discrete set of pixels and therefore we can only differentiate between these directions.
+
+
Gradient-directions: 0°, 45°, 90°, 135°
+
To do:
+
+
+
Create a new method:
+
public ByteProcessor getDir (FloatProcessor X_Deriv, FloatProcessor Y_Deriv){}
+
+
+
+
Create a ByteProcessor to store the directions
+
+
+
Create an int-array:
+
int[] angles = {0,45,90,135,180};
+
+
(180° is equivalent to 0° but needs to be considered as a seperate case)
+
+
+
Iterate through the input-FloatProcessors and calculate the direction for each pixel (in degrees). Remember that the y-axis is inverted.
+
+
+
Search for the closest match in the angles-array and store the final direction in the output-ByteProcessor.
+
+📝 Note:
+
Negative values are simply "mapped" to the corresponding positive value (for example -45° ≙ 135° or -90° ≙ 90°). You can do this by simply checking if the value is negative and then adding 180°. If the closest match is 180° the direction is set to 0°
+
+
+
+
Return the final ByteProcessor
+
+
+
+
5.3: Non-Maximum-Suppression
+
During NMS the goal is to reduce edges to a single-pixel-line. This is achieved by searching for local intensity-maxima in the Gradient-Direction, so that edge-information is preserved, but the blurriness of primitive edge-detection tools is removed.
+
More specifically, this works by checking each pixel in relation to its two neighbouring pixels (along the gradient-direction). If the pixel is the highest of the three, it is kept as part of the edge. If not, it is discarded (set to 0).
+
To do:
+
+
+
Create a new method:
+
public FloatProcessor nonMaxSuppress(FloatProcessor Grad, ByteProcessor Dir) {}
+
+
+
+
Create a new FloatProcessor to store the resulting image
+
+
+
Iterate through the gradient-image. Check the direction for each pixel and then evaluate whether or not it is a local maximum in gradient-direction.
+
+
+
If it is a local maximum, store the value in the output-FloatProcessor
+
+
+
Return the final FloatProcessor
+
+
+
+
5.4: Hysteresis Thresholding
+
Hysteresis Thresholding is a special form of thresholding, which uses two threshold-values instead of one (upper and lower). Similar to standard thresholding, if a pixel's value falls above the upper threshold, it is kept as part of the image. If however, the pixel's value falls below, or is equal to the upper threshold, but above the lower threshold, the pixel is only kept as part of the image, if it is directly connected to a pixel above the upper threshold. Any pixel equal to or below the lower threshold is disregarded.
+
To do:
+
+
+
Create a new method:
+
public ByteProcessor hysteresisThreshold (FloatProcessor In, int upper, int lower){}
+
+
+
+
Since you are working with a FloatProcessor and the values a pixel can have are not the easiest to work with, you can instead convert your input-values to percentages of the maximum value within the image. To do so, simply add:
You can then use tHigh and tLow as your threshold values, while being able to define them through low integer numbers. As a starting point you can for example use 15 as upper and 5 as lower. Feel free to experiment around with these.
+
+
+
Create an output-ByteProcessor to store the final image
+
+
+
Iterate through the input image and check the threshold condition for each pixel. Set pixels above the upper limit to white in the output image
+
+
+
In order to check, whether a pixel above the lower threshold is connected to an existing edge, you will need to iterate through the image again and check the connections repeatedly, because a pixel can become connected to the edge through any number of adjacent pixels.
+To avoid mistakes here, the following code, as well as the included hasNeighbours()-method will be provided. You can simply add this code after you performed the first iteration through the image.
Congratulations, you have now built all the tools needed to use the final provided plugin called User_Interface.
+It allows you to play around with the different kinds of image-processing-techniques, you learned to apply over the course of this project.
+
Tools similar to those you implemented could for example be applied to facilitate or automate the diagnosis for radiologists.
+There is therefore great research interest in segmentation, edge detection, and various similar processing methods.
+
In your report you should:
+
+
Name at least two examples of current trends in image processing. Provide citations for each example and describe them briefly.
+
For your examples, are they already applied to clinical routine? If not, do you think they soon will be? Try to explain why or why not.
+
+
In the last part, summarize what you have implemented and explained in your project report. Review the shortcomings of your approaches and how they could be mitigated in the future, and conclude your report.
+
+
Submission
+
Once you are finished with your code and satisfied with the results, please compress the entire src folder into a zip file and upload it to StudOn.
+Afterwards, write the report and submit the PDF file as well.
+
The deadline for submission is August 26th at 23:55 via StudOn.
+
We recommend that you submit earlier versions of your project to avoid accidentally missing the deadline. Only the last version will be considered.
+
Thank you for your time and interest! We look forward to reading your reports and hope to see you again for future lectures, projects, or theses!
+
Best regards
+Your MT2-Team
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conditional_breakpoints_eclipse.png b/conditional_breakpoints_eclipse.png
new file mode 100644
index 00000000..3e622807
Binary files /dev/null and b/conditional_breakpoints_eclipse.png differ
diff --git a/coolwave.png b/coolwave.png
new file mode 100644
index 00000000..362d9070
Binary files /dev/null and b/coolwave.png differ
diff --git a/coolwave3.png b/coolwave3.png
new file mode 100644
index 00000000..5ba3d855
Binary files /dev/null and b/coolwave3.png differ
diff --git a/ct_mri_fusion.png b/ct_mri_fusion.png
new file mode 100644
index 00000000..8fc1f176
Binary files /dev/null and b/ct_mri_fusion.png differ
diff --git a/debug_eclipse.png b/debug_eclipse.png
new file mode 100644
index 00000000..86a29c98
Binary files /dev/null and b/debug_eclipse.png differ
diff --git a/debug_intellj.png b/debug_intellj.png
new file mode 100644
index 00000000..f4ab9926
Binary files /dev/null and b/debug_intellj.png differ
diff --git a/dicom_import_demo.webm b/dicom_import_demo.webm
new file mode 100644
index 00000000..5d21dd00
Binary files /dev/null and b/dicom_import_demo.webm differ
diff --git a/dimensionless.png b/dimensionless.png
new file mode 100644
index 00000000..94ede323
Binary files /dev/null and b/dimensionless.png differ
diff --git a/doge_soon.png b/doge_soon.png
new file mode 100644
index 00000000..53972826
Binary files /dev/null and b/doge_soon.png differ
diff --git a/dot.png b/dot.png
new file mode 100644
index 00000000..5e6f19c4
Binary files /dev/null and b/dot.png differ
diff --git a/drag_drop.webm b/drag_drop.webm
new file mode 100644
index 00000000..f16089dd
Binary files /dev/null and b/drag_drop.webm differ
diff --git a/drawing_compressed.jpg b/drawing_compressed.jpg
new file mode 100644
index 00000000..0c39d66a
Binary files /dev/null and b/drawing_compressed.jpg differ
diff --git a/drawing_parallel_compressed.jpg b/drawing_parallel_compressed.jpg
new file mode 100644
index 00000000..0f045522
Binary files /dev/null and b/drawing_parallel_compressed.jpg differ
diff --git a/eclipse_breakpoint.png b/eclipse_breakpoint.png
new file mode 100644
index 00000000..1fb346e7
Binary files /dev/null and b/eclipse_breakpoint.png differ
diff --git a/eclipse_watches.png b/eclipse_watches.png
new file mode 100644
index 00000000..16d07cac
Binary files /dev/null and b/eclipse_watches.png differ
diff --git a/edge-directions.png b/edge-directions.png
new file mode 100644
index 00000000..dfa1f630
Binary files /dev/null and b/edge-directions.png differ
diff --git a/edgedetection/index.html b/edgedetection/index.html
new file mode 100644
index 00000000..72e61120
--- /dev/null
+++ b/edgedetection/index.html
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Project Work 4 - Edge Detection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Similar to Thresholding and Segmentation, Edge-Detection is a commonly used technique in image processing (i.e. to descern boundarys of objects within an image etc.). In your project you will first be implementing a set of primitive edge-detection filters, as well as the more advanced Canny-Edge-Filter (Task 5).
+
+
4.1: The Filter-Kernels
+
There are a variety of different Kernels used for edge detection; some of the most common ones are Sobel, Scharr, and Prewitt - Kernels.
When applying these Filter-Kernels to an image through convolution, you essentially create the derivative of the image.
+This is because these Kernels result in higher pixel-values in regions, where the image contains a sharp change in brightness (similar to derivatives in analysis). This "derivation" is performed in X- and Y-direction seperately.
+Using both the X- and Y-derivative of an image, you can then generate the image-gradient by calculating the euclidean norm over both derivatives at each pixel of the image.
+
+
$G$ = $\sqrt{G_{x} ^ 2+G_{y} ^ 2}$
+
+
This image-gradient will then show the edges as bright and the rest of the image as black.
+
+
4.2: Filtering and Gradient
+
To do:
+
+
+
Open the Task_4_Filters-class and create a new method:
+
public FloatProcessor applyFilter (FloatProcessor In, int[][] kernel){}
+
+
+
+
Create a new FloatProcessor to store the resulting image
+
+
+
Iterate through the input image and perform the convolution
+
+📝 Note:
+Since you are working with a 3x3 kernel, you can't simply iterate through the entire image because you would encounter OutOfBounds-exceptions when getting to the rim of the image.
+For the sake of simplicity you can therefore ignore the outermost row/column of pixels.
+
+
+
+
Return the resulting image
+
+
+
+
Now that your plugin can perform a convolution (and therefore a derivation), you can calculate the image-gradient.
+
To do:
+
+
+
Create a new method:
+
public FloatProcessor getGradient (FloatProcessor In_X, FloatProcessor In_Y){}
+
+
(In_X and In_Y are the derivatives in X- and Y-direction respectively)
+
+
+
Check if the input-images have the same dimensions, if not throw a fitting exception
+
+
+
Create a new FloatProcessor to store the resulting image
+
+
+
Iterate through the image and calculate the Gradient value for each pixel in the output-image
+
+
+
Return the resulting image-gradient
+
+
+
+
4.3: User-Dialog
+
At this point your plugin contains everything needed to perform primitive edge-detection.
+As a final step you will implement a simple user-dialog, which will allow the user to select between the three filters mentioned above.
+The following code should be implemented in the run-method
Consider a point $\mathbf{x}=(x,y)$ in the 2D space. Then
+we can define translation, rotation and scaling
+using the following equations which maps the points from $\mathbf{x} \to \mathbf{x}'$ where $\mathbf{x}' = (x',y)'$ is the new transformed coordinates.
+
Translation
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = x + t_x$
+
$y' = y + t_y$.
+
+
This can also be written in vector notation as follows:
+
+
$\mathbf{x}' = \mathbf{x} + \mathbf{t}$ where $\mathbf{t} = (t_x, t_y)$
+
+
+
Rotation
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = x cos\theta + y sin\theta$
+
$y' = -x sin\theta + y cos\theta$
+
+
+
+
Scaling
+
+
We can define the translation in $x$ and $y$ direction as below
+
+
$x' = sx$
+
$y' = sy$.
+
+
+
+
+
We can also chain the different transformations and compute the transformed coordinate using a single equation
+
$$x' = s (x \cos\theta + y \sin\theta ) + t_x$$
+$$y' = s(-x \sin\theta + y \cos\theta) + t_y$$
For more details about image transformations, you can
+also check out the computer vision book by Richard Szeliski.
+A free pdf is available on the website.
+
Image interpolation
+
Let us consider an example image
+transformation. Initially we have an unit square with its left corner placed at the origin (0,0). Assume that we have image intensity values at the
+corners of the unit square at a = (0,0), b =(0,1),
+c = (1,1), d = (0,1).
+
We apply a small translation $\mathbf{t} = (0.5,0.5)$ to the square. As you can see in the image, now our left corner point is at $a' = (0.5,0.5)$.
+Since we don't have the value at this point we are forced to approximate the value from the information available to us. This is the main
+reason for implementing image interpolation function as image transformations can always lead to coordinates for which we don't have any value and we approximate the value using the neighbourhood information.
+
+
The way in which we use the neighbouring information governs the quality of the interpolated image. The different types of interpolation are as follows:
+
+
Nearest neighbour
+
Bilinear
+
Bi-cubic
+
+
Illustration of different types of interpolation
+
The image below shows how the different types of interpolation works. The discrete points are the places where we know the function value and
+the lines connecting these points represents the interpolated function values.
We will implement only bilinear interpolation
+for our Image class.
+Lets dive a bit deeper into the bilinear
+interpolation and look at the how the values are interpolated using this method.
Consider the above image where the red dots ($Q_{ij}$) indicate the discrete points where we know the function value. We want to approximate the function value at point $P$.
+
Consider the points(red dots) in the above image:
+
$$Q_{11} = (x_1,y_1), Q_{21} = (x_2,y_1)$$
+
$$ Q_{12} = (x_1,y_2), Q_{22} = (x_2,y_2)$$
+
Assume that each of these points $Q_{ij}$ corresponds to an image pixel with intensity values.
+
Now we need to find the image intensity value at point $P= (x,y)$ which is in between the points $Q_{ij}$
+
Let us consider one coordinate at
+a time (i.e. $x_i$ or $y_i$) for interpolation.
+Here we intially interpolate along the $x$-axis.
+So now our aim is to find values at $P(x,y_i)$.
+(i.e. find intermediat values $R_i (x,y_i)$. We have two values of $y_i$ so we can find two intermediate values.)
+
We can obtain two such values by interpolating along
+$Q_{11}, Q_{21}$ and find out the intermediate value as $R_1$ and between $Q_{12}, Q_{22}$ and find out the intermediate value $R_2$.Look at the image of how we just interpolate along the line.
+
We can directly use the linear interpolation equation to find out the values of $f(R_1)$ and $f(R_2)$
Once we have the values at $R_1 = (x,y_1)$ and $R_2 = (x,y_2)$ we can again use the same linear interpolation formula along the $y$-axis and find the function value $f(P)$ at $P=(x,y)$.
+
This way we can interpolate(approximate) any values (x,y) if we know the neighbouring values. However when we actually implement the method we also need to find out the neighbouring values on our own as they are not provided.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/img_transform_theory/interpolation_img.png b/img_transform_theory/interpolation_img.png
new file mode 100644
index 00000000..b5d0b202
Binary files /dev/null and b/img_transform_theory/interpolation_img.png differ
diff --git a/img_transform_theory/rotation.png b/img_transform_theory/rotation.png
new file mode 100644
index 00000000..42d779f7
Binary files /dev/null and b/img_transform_theory/rotation.png differ
diff --git a/img_transform_theory/scaling.png b/img_transform_theory/scaling.png
new file mode 100644
index 00000000..ec0da6fa
Binary files /dev/null and b/img_transform_theory/scaling.png differ
diff --git a/img_transform_theory/translation.png b/img_transform_theory/translation.png
new file mode 100644
index 00000000..4cf4afed
Binary files /dev/null and b/img_transform_theory/translation.png differ
diff --git a/img_transform_theory/types_trans_img_selzki.png b/img_transform_theory/types_trans_img_selzki.png
new file mode 100644
index 00000000..857158fb
Binary files /dev/null and b/img_transform_theory/types_trans_img_selzki.png differ
diff --git a/img_transform_theory/types_trans_mat_szeliski.png b/img_transform_theory/types_trans_mat_szeliski.png
new file mode 100644
index 00000000..4125b796
Binary files /dev/null and b/img_transform_theory/types_trans_mat_szeliski.png differ
diff --git a/imgs/common/cil_logo.png b/imgs/common/cil_logo.png
new file mode 100644
index 00000000..625357ab
Binary files /dev/null and b/imgs/common/cil_logo.png differ
diff --git a/imgs/common/idea_logo.png b/imgs/common/idea_logo.png
new file mode 100644
index 00000000..84fa0d4b
Binary files /dev/null and b/imgs/common/idea_logo.png differ
diff --git a/imgs/common/joint_logo_small.png b/imgs/common/joint_logo_small.png
new file mode 100644
index 00000000..e6d44904
Binary files /dev/null and b/imgs/common/joint_logo_small.png differ
diff --git a/imgs/common/prl_logo_new_gray.png b/imgs/common/prl_logo_new_gray.png
new file mode 100644
index 00000000..6c516194
Binary files /dev/null and b/imgs/common/prl_logo_new_gray.png differ
diff --git a/imgs/common/prl_logo_small.png b/imgs/common/prl_logo_small.png
new file mode 100644
index 00000000..99a19bc1
Binary files /dev/null and b/imgs/common/prl_logo_small.png differ
diff --git a/import_eclipse/1.png b/import_eclipse/1.png
new file mode 100644
index 00000000..8c615f1a
Binary files /dev/null and b/import_eclipse/1.png differ
diff --git a/import_eclipse/2.png b/import_eclipse/2.png
new file mode 100644
index 00000000..6c081115
Binary files /dev/null and b/import_eclipse/2.png differ
diff --git a/import_eclipse/3.png b/import_eclipse/3.png
new file mode 100644
index 00000000..6ecb4d48
Binary files /dev/null and b/import_eclipse/3.png differ
diff --git a/import_eclipse/4.png b/import_eclipse/4.png
new file mode 100644
index 00000000..6b16cb41
Binary files /dev/null and b/import_eclipse/4.png differ
diff --git a/import_eclipse/5.png b/import_eclipse/5.png
new file mode 100644
index 00000000..62719806
Binary files /dev/null and b/import_eclipse/5.png differ
diff --git a/import_eclipse/6.png b/import_eclipse/6.png
new file mode 100644
index 00000000..37699e85
Binary files /dev/null and b/import_eclipse/6.png differ
diff --git a/import_eclipse/eclipse_gradle.png b/import_eclipse/eclipse_gradle.png
new file mode 100644
index 00000000..0e94addf
Binary files /dev/null and b/import_eclipse/eclipse_gradle.png differ
diff --git a/import_eclipse/execute.png b/import_eclipse/execute.png
new file mode 100644
index 00000000..c3553a76
Binary files /dev/null and b/import_eclipse/execute.png differ
diff --git a/import_eclipse/imagej.png b/import_eclipse/imagej.png
new file mode 100644
index 00000000..124d1aab
Binary files /dev/null and b/import_eclipse/imagej.png differ
diff --git a/import_eclipse/index.html b/import_eclipse/index.html
new file mode 100644
index 00000000..969c8a9b
--- /dev/null
+++ b/import_eclipse/index.html
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Import a Gradle project with Eclipse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
On Windows, macOS download the latest Java version 15 from Oracle.
+On Ubuntu Linux, you can install sudo apt install openjdk-14-jdk or sudo apt install openjdk-11-jdk.
+At least Java 8 is required. If you have a working installtion from AuD, you can skip this step.
Chose path of the downloaded project and click Next (it must be the folder that contains build.gradle)
+
+
+
+
Grab a coffee while it's downloading ImageJ
+
+
+
+
Try to run Exercise00
+
+
+
+
You are seeing red squiggles, you found a bug in a Eclipse plugin. Upgrade it in the Eclipse Marketplace!
+Update: I think this bug is resolved on new Eclipse versions. So you don't have to upgrade "Buildship Gradle Integration" on new versions!
+
+
+
+
Search for gradle build! Then, click on the Installed button of "Buildship Gradle Integration".
+
+
+
+
... and click on Update! This should solve the bug after a restart.
+
+
+
+
You should now see ImageJ when you start Exercise01.
+
+
+
+
If you're still facing problems: please also check whether a valid Java Runtime Enviroment was found by right-clicking on the project folder
+(if it still has red crosses). Select Properties -> Java Build Path. Sometimes Eclipse does not find your Java
+installation. You can select it there.
+
+
+
+
Still facing problems? Are you sure you imported the folder that contains build.gradle.
+If you imported a subfolder or a folder that contain the folder that contains build.gradle, Eclipse will be very confused
+but does not yield an error.
On Windows, macOS download the latest Java version 15 from Oracle.
+On Ubuntu Linux, you can install sudo apt install openjdk-14-jdk or sudo apt install openjdk-11-jdk.
+At least Java 8 is required.
+
+
+
You can get IntelliJ from here. There's a free community edition and you can also
+unlock the Ultimate Edition when applying with your FAU email adress here.
+
+ Sebastian Dietz, Mischa Dombrowski, Stephan Seitz
+
+
+
+
+
+
+
+
+
Project Setup:
+
Since you have been working with IntelliJ throughout the entire semester when working on your exercises, you should already have it installed on the device you intend to use.
+If not, have a look at the setup-guide you were given at the beginning of the Semester and install it accordingly.
+
The setup for this project will work very similar to the setup for your exercises.
+
If you encounter any problems while setting up, feel free to ask your tutors.
Unpack the zip-file and be sure to select the file-destination such that it is not unpacked "into its own folder" (meaning that there would be a MT2-project-ImageProcessing-folder within the MT2-project-ImageProcessing-folder) as might be the case by default.
+
+
+
+
Open IntelliJ and click (File) → Open → MT2-project-ImageProcessing
+
and hit ok to open the empty project template.
+
Make sure to select the entire MT2-project-ImageProcessing-folder and not one of the folders contained within.
+
+
+
+
Navigate to File → Project Structure → Project and select jbr-17 or 17 or a similar SDK.
+The SDK that works for you may vary depending on your device and the IntelliJ version you are using. If you have been working on your exercises, simply use the one that worked for you when setting up initially.
+
+
+
+
Navigate to File → Project Structure → Modules → Paths.
+Check, that Use module compile output path is selected and that the
+plugins-folder contained in the is selected as the destination. If this is set
+incorrectly, simply use the folder-icon towards the right of the path to navigate to
+this folder and select it.
+
+
+
+
In the same window select Libraries and make sure that ij is listed.
+If it is missing, add it by hitting + → Java and selecting the ij.jar file that is contained within your project.
+
+
+
After concluding these steps, your project structure should look something like this:
+
+
+
You should now be able to build your project without any errors.
+
+
+
+
+
+
You can now right-click on the ij.jar-file in your project structure and select Run 'ij.jar'. This should open the ImageJ interface. Check the Plugins-dropdown-menu. It should look like this:
+
+
+
+
+
Similar to the intitial exercise-setup, you should be able to run the included Setup_Test- Plugin and the message should pop up.
+
Once you are done with this and everything is working nicely, you can get started with working on your first task.
+
General Info:
+
ImageJ
+
The image processing program we want to use during this semester is called ImageJ.
+It was developed at the US National Institutes of Health and is used nowadays especially in research
+for medical and biological images.
+
If you want to, you can download a stand-alone version of the program here.
+This is not necessary for the exercises.
+
Debugging
+
Everything here should just be a recap of what you know about debugging from the exercises. Feel free to skip if you know how debugging works!
+
To do the project during this semester, you will often need to use the debug mode to find errors in your code.
+Please make sure that you know how to run your program in debug mode, since you might not have seen it before (Shame on you AuD!).
+Please always try to debug an issue first before you ask a tutor for help!
+
To debug an application just click on the bug symbol! You can try this with file src/main/java/exercises/DebugExample.java.
+
+
+
Also set some breakpoints (where the program should stop) by clicking on the space left to the line numbers.
+
+
+A Breakpoint. The program will stop here in debug mode.
+
+
You should also know how to make the debugger stop on an exception (to see what's wrong when the program is crashing).
+There is a bug in program! When you run it, you should see a crash:
+
+
IntelliJ suggests to create a break point. Click Create breakpoint!
+
+
Confirm with Done.
+
+
When you run the program again in debug mode it will stop at the line where the error happened.
+This will help you to find out what is wrong at that point.
+
Also Eclispe will stop automatically and indicate what the problem is (if it doesn't please upgrade to the newest version of Eclispe):
+
+
Very useful is also the calculator symbol, that let's you evaluate expressions.
+If you don't know, what is wrong in a line, you can tell the calculator to the termine the value of a or a.x to determine which one
+is null (or of very.complicated.expression[2] when things get more complicated and a variable is not shown in the list below).
+
+
In Eclipse, the calculator are a pair of glasses (make sure you are in debug perspective, menu: Window > Perspective > Open Perspective > Debug).
+
This is a short introduction with general information and best practices including project report guidelines. Thoroughly read it and stricly follow all rules. We have also prepared a video with all necessary information about the report.
+
We provide you with a basic java template including some useful helper functions. You have to use this template as the starting point of your project. For more information on the installation have a look at our getting started guide.
+
Furthermore, we provide a latex-template that you should use. It gives a more detailed structure for the report. Don't change the order and replace all images with images generated from your own implementation.
+
In case you are working on CIP machines you may run into quota issues. You can fix these issues with our guide.
+
Please also note that you can connect remotely to CIP machines using a remote SSH connection
+
Introduction:
+
This project aims to introduce you to some fundamental image-processing-techniques which find application in a large variety of fields.
+Since you are studying to become biomedical engineers, you will mainly be working with an image of cells, as a simple example of images you might encounter over the course of your scientific career.
+
+
The techniques you will be working with are the following:
+
+
Basic Thresholding / image-segmentation
+
Evaluation of your segmentation
+
Otsu-Segmentation
+
Primitive edge-detection
+
Canny edge-detection
+
+
By the end of this project, you will have built a set of ImageJ-Plugins that are capable of performing all of these operations. In addition to that, you will be documenting your progress and results in the form of a written Project-Report.
+This is why at the end of every task you will find a number of bullet-points detailing which topics you should include in your report.
+
The coding section of your project will be written in Java using IntelliJ as the editor of choice. You should already be familiar with coding in IntelliJ from lectures like AuD-MT as well as from your MT2 computer-exercises.
+
Your written project report will be written in LaTeX using the online editor Overleaf.
+
General Information
+
The project report, as well as the coding, are individual work. As such, you need to submit them individually. Also, do not use any built-in methods that we do not specifically allow.
+Note: we'll check for plagiarism.
+
Report Guidelines
+
The project report can be written in either English or German. Please write between 4 and 7 pages of text, not counting the images.
Do not modify the style or the formatting. No ornaments for page numbers!
+
The template defines the overall structure of your project. You have to fill in all the gaps.
+
Do not change the order of the sections in our template.
+
Do not change the titles of sections or subsections.
+
Do not change the order of the figures in the project. You can optionally add new figures to the report.
+
We will only count answers that appear in the correct subsection of the report. If you want to avoid repeating yourself, use \label{} and \ref{}.
+
The template contains examples for all commands necessary for the report. It is allowed to import and use other packages if desired.
+
+
+
+
Use scientific references in your explanations to clearly separate your work from the work of others:
+
+
Use the bibliography (see template Bib/bibliography.tex) and keep the citation style provided in the template.
+The bibliography must be sorted (either alphabetically when using the Name/Year citation style or
+by the order you use them in the text when numbering the sources).
+
Do not use more than two references that are websites only.
+
+
+
+
All symbols in equations need to be explained in the text.
+
+
+
All equations, figures and tables, if applicable, have to be numbered and referenced in the text.
+
+
All your figures should look professional.
+They should not be blurry or hand-drawn and images should not have a window border of ImageJ.
+They should not overlap with the text.
+
All figures need to have captions giving a brief description what the figure shows. The caption should be below the figure.
+
Label all axes in all plots and coordinate systems!
+
A list of figures is not needed.
+
Replace the images in the report template with images from your own implementation applied to knee data.
+
+
+
+
Do not use abbreviations without introducing them. E.g., the first time you should write "Magnetic Resonance Imaging (MRI)".
+After that, "MRI" is enough.
+
+
+
Just like in storytelling, connect the context of the project report, so everyone can see the flow.
+
+
+
Do not use footnotes!
+
+
+
Check your spelling: there shouldn't be any obvious spelling errors that can be detected by a spell checker.
+
+
+
To obtain all the points for the content of your report, additional to the above
+
+
Check whether you have addressed all the questions in the task description.
+
Check whether you have provided all the result figures and a detailed explanation of them.
+
+
Guidelines for the Use of Writing Assistants
+
We welcome students to use writing assistants to enhance the quality of the written report. However, we would like to point out that
+students are responsible for the correctness of the content, and that scientific references are mandatory to verify all the claims made in the report.
+
If you decide to use any writing assistant, we ask you to add the tool to the list of references.
+The use of spell-checking and translation software is encouraged and can be done without adding them to the list of references.
+
+
+
+
+
diff --git a/iterative.png b/iterative.png
new file mode 100644
index 00000000..466f221d
Binary files /dev/null and b/iterative.png differ
diff --git a/json/index.html b/json/index.html
new file mode 100644
index 00000000..bd622161
--- /dev/null
+++ b/json/index.html
@@ -0,0 +1,118 @@
+
+
+[
+{
+"title": "Project Work 6 - Outlook and Conclusion",
+"url": "https://mt2-erlangen.github.io/conclusion/",
+"body": "Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n6. Outlook and Conclusion\nCongratulations, you have now built all the tools needed to use the final provided plugin called User_Interface. \nIt allows you to play around with the different kinds of image-processing-techniques, you learned to apply over the course of this project.\nTools similar to those you implemented could for example be applied to facilitate or automate the diagnosis for radiologists.\nThere is therefore great research interest in segmentation, edge detection, and various similar processing methods.\nIn your report you should:\n\nName at least two examples of current trends in image processing. Provide citations for each example and describe them briefly.\nFor your examples, are they already applied to clinical routine? If not, do you think they soon will be? Try to explain why or why not.\n\nIn the last part, summarize what you have implemented and explained in your project report. Review the shortcomings of your approaches and how they could be mitigated in the future, and conclude your report.\n\nSubmission\nOnce you are finished with your code and satisfied with the results, please compress the entire src folder into a zip file and upload it to StudOn. \nAfterwards, write the report and submit the PDF file as well. \nThe deadline for submission is August 26th at 23:55 via StudOn. \nWe recommend that you submit earlier versions of your project to avoid accidentally missing the deadline. Only the last version will be considered.\nThank you for your time and interest! We look forward to reading your reports and hope to see you again for future lectures, projects, or theses! \nBest regards\nYour MT2-Team\n"
+}
+
+{
+"title": "Project Work 5 - Canny Edge",
+"url": "https://mt2-erlangen.github.io/cannyedge/",
+"body": "Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n5: Canny-Edge\nThe Canny-Edge algorithm is one of the more advanced algorithms to perform edge detection. Unlike primitive approaches, like those you implemented in Task 4, Canny's algorithm leads to clearly defined edges (only one pixel in width) and a significant reduction in false detections (meaning regions of sharp brightness-transition, which are not edges of interest). \nThis is achieved through the following process: \n\nBlurring the image (Gaussian Blur) to reduce noise\nDetermining the image-gradient using the Sobel-kernel (→ Task 4)\nDetermining the gradient-direction for each pixel\nPerforming Non-Maximum-Suppression along the gradient-direction\nPerforming Hysteresis-Thresholding to select edges of intrest \n\nThese steps will be explained further later on.\n\n5.1: Blurring and Gradient\nThe first part of this task can be implemented directly in the run-method of the Task_5_CannyEdgeDetection-class.\nTo do:\n\n\nConvert the input-image to a FloatProcessor and apply a gaussian blur.\n\n📝 Note: \nThe $\\sigma$-parameter is one of the values you can play around with later on to improve your results. Once you are done, you will be able to set this value via a user-dialog. For now, a good starting point would be the value 2\n\n\n\nCreate 3 new FloatProcessors to store the image-gradient and the derivatives. Use the methods you implemented in Task 4 to apply a Sobel-operator and to calculate the gradient.\n\n\n\n5.2 Determining Gradient-Directions\nTo calculate the direction of each pixel, you will now implement a new method called getDir.\nThe formula for calculating the gradient-direction at a given pixel is:\n Θ = atan2(Gy , Gx) \nwith Gy and Gx being the values of the respective y- and x-derivatives at the current position.\n\n📝 Note: \nThe gradient-direction provides information about the angle or direction of an edge within the image. At any given point the edge will be perpendicular to the gradient direction. This will become important when it comes to performing Non-Maximum-Suppression (NMS). \nAn example: \n\n white pixels ≙ edge; arrow ≙ gradient-direction \n\nThe atan2-method used to determine the direction returns the angle $\\Theta$, that results from converting a cartesian coordinate (x,y) to radians (r,$\\Theta$). The angle theta is therefore returned in radians and you will need to convert it to degrees. \n\n\n ⚠ Important warning: ⚠\n \n The atan2-method expects coordinates in a standard cartesian coordinate-system (x→ / y↑). Since you are working with images, the y-axis is defined differently (x→ / y↓) and you will therefore need to call the method like this: Math.atan2 (-y, x) \n\nThe getDir-method will determine the gradient-direction for each pixel and then round it to one of the following values: 0°, 45°, 90°, 135°. These stem from the fact that an image is a discrete set of pixels and therefore we can only differentiate between these directions. \n\nGradient-directions: 0°, 45°, 90°, 135°\nTo do:\n\n\nCreate a new method:\npublic ByteProcessor getDir (FloatProcessor X_Deriv, FloatProcessor Y_Deriv){}\n\n\n\nCreate a ByteProcessor to store the directions\n\n\nCreate an int-array:\nint[] angles = {0,45,90,135,180};\n\n(180° is equivalent to 0° but needs to be considered as a seperate case)\n\n\nIterate through the input-FloatProcessors and calculate the direction for each pixel (in degrees). Remember that the y-axis is inverted.\n\n\nSearch for the closest match in the angles-array and store the final direction in the output-ByteProcessor. \n\n📝 Note: \nNegative values are simply "mapped" to the corresponding positive value (for example -45° ≙ 135° or -90° ≙ 90°). You can do this by simply checking if the value is negative and then adding 180°. If the closest match is 180° the direction is set to 0°\n\n\n\nReturn the final ByteProcessor\n\n\n\n5.3: Non-Maximum-Suppression\nDuring NMS the goal is to reduce edges to a single-pixel-line. This is achieved by searching for local intensity-maxima in the Gradient-Direction, so that edge-information is preserved, but the blurriness of primitive edge-detection tools is removed.\nMore specifically, this works by checking each pixel in relation to its two neighbouring pixels (along the gradient-direction). If the pixel is the highest of the three, it is kept as part of the edge. If not, it is discarded (set to 0). \nTo do:\n\n\nCreate a new method:\npublic FloatProcessor nonMaxSuppress(FloatProcessor Grad, ByteProcessor Dir) {}\n\n\n\nCreate a new FloatProcessor to store the resulting image\n\n\nIterate through the gradient-image. Check the direction for each pixel and then evaluate whether or not it is a local maximum in gradient-direction.\n\n\nIf it is a local maximum, store the value in the output-FloatProcessor\n\n\nReturn the final FloatProcessor\n\n\n\n5.4: Hysteresis Thresholding\nHysteresis Thresholding is a special form of thresholding, which uses two threshold-values instead of one (upper and lower). Similar to standard thresholding, if a pixel's value falls above the upper threshold, it is kept as part of the image. If however, the pixel's value falls below, or is equal to the upper threshold, but above the lower threshold, the pixel is only kept as part of the image, if it is directly connected to a pixel above the upper threshold. Any pixel equal to or below the lower threshold is disregarded. \nTo do: \n\n\nCreate a new method: \npublic ByteProcessor hysteresisThreshold (FloatProcessor In, int upper, int lower){}\n\n\n\nSince you are working with a FloatProcessor and the values a pixel can have are not the easiest to work with, you can instead convert your input-values to percentages of the maximum value within the image. To do so, simply add: \nfloat tHigh = ((float)In.getMax()*upper)/100f;\nfloat tLow = ((float)In.getMax()*lower)/100f;\n\nYou can then use tHigh and tLow as your threshold values, while being able to define them through low integer numbers. As a starting point you can for example use 15 as upper and 5 as lower. Feel free to experiment around with these. \n\n\nCreate an output-ByteProcessor to store the final image \n\n\nIterate through the input image and check the threshold condition for each pixel. Set pixels above the upper limit to white in the output image \n\n\nIn order to check, whether a pixel above the lower threshold is connected to an existing edge, you will need to iterate through the image again and check the connections repeatedly, because a pixel can become connected to the edge through any number of adjacent pixels. \nTo avoid mistakes here, the following code, as well as the included hasNeighbours()-method will be provided. You can simply add this code after you performed the first iteration through the image.\n\nboolean changed = true;\nwhile (changed) {\n changed = false;\n for (int x = 0; x < In.getWidth(); x++) {\n for (int y = 0; y < In.getHeight(); y++) {\n if (In.getPixelValue(x, y) > tLow && hasNeighbours(Out, x, y) && Out.getPixel(x,y)==0) {\n Out.set(x, y, 255);\n changed = true;\n }\n }\n }\n }\n\n(Out refers to the output-image. If you named it differently, you can obviously change the code accordingly)\n\n\nReturn the output image\n\n\n\nAdd a simple user-dialog to the run-method, which allows you to select values for $\\sigma$, the upper threshold and the lower threshold.\nFinally perform the getDir,nonMaxSuppress and hysteresisThreshold steps in sequence within your run-method and display your final result.\n\n5.5: Project-Report\nThe part of your report concerning Task_5 should contain the following:\n\nA short description of what Canny-Edge-Detection aims to do and how it works\nIn which ways it is superior to the more primitive approaches\nImages you generated with your code. How do the parameters influence your results? \n\nNext\n"
+}
+
+{
+"title": "Project Work 4 - Edge Detection",
+"url": "https://mt2-erlangen.github.io/edgedetection/",
+"body": "Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n4: Primitive Edge-Detection Filters\nSimilar to Thresholding and Segmentation, Edge-Detection is a commonly used technique in image processing (i.e. to descern boundarys of objects within an image etc.). In your project you will first be implementing a set of primitive edge-detection filters, as well as the more advanced Canny-Edge-Filter (Task 5). \n\n4.1: The Filter-Kernels\nThere are a variety of different Kernels used for edge detection; some of the most common ones are Sobel, Scharr, and Prewitt - Kernels.\n\nSobel:\nX-Direction: $\\begin{bmatrix}1&0&-1\\2&0&-2\\1&0&-1\\end{bmatrix}$ Y-Direction: $\\begin{bmatrix}1&2&1\\0&0&0\\-1&-2&-1\\end{bmatrix}$\n\nScharr:\nX-Direction: $\\begin{bmatrix}47&0&-47\\162&0&-162\\47&0&-47\\end{bmatrix}$ Y-Direction: $\\begin{bmatrix}47&162&47\\0&0&0\\-47&-162&-47\\end{bmatrix}$\n\nPrewitt:\nX-Direction: $\\begin{bmatrix}1&0&-1\\1&0&-1\\1&0&-1\\end{bmatrix}$ Y-Direction: $\\begin{bmatrix}1&1&1\\0&0&0\\-1&-1&-1\\end{bmatrix}$\n\nWhen applying these Filter-Kernels to an image through convolution, you essentially create the derivative of the image. \nThis is because these Kernels result in higher pixel-values in regions, where the image contains a sharp change in brightness (similar to derivatives in analysis). This "derivation" is performed in X- and Y-direction seperately.\nUsing both the X- and Y-derivative of an image, you can then generate the image-gradient by calculating the euclidean norm over both derivatives at each pixel of the image. \n\n$G$ = $\\sqrt{G_{x} ^ 2+G_{y} ^ 2}$\n\nThis image-gradient will then show the edges as bright and the rest of the image as black.\n\n4.2: Filtering and Gradient\nTo do:\n\n\nOpen the Task_4_Filters-class and create a new method: \npublic FloatProcessor applyFilter (FloatProcessor In, int[][] kernel){}\n\n\n\nCreate a new FloatProcessor to store the resulting image\n\n\nIterate through the input image and perform the convolution \n\n📝 Note: \nSince you are working with a 3x3 kernel, you can't simply iterate through the entire image because you would encounter OutOfBounds-exceptions when getting to the rim of the image. \nFor the sake of simplicity you can therefore ignore the outermost row/column of pixels.\n\t\n\n\nReturn the resulting image\n\n\n\nNow that your plugin can perform a convolution (and therefore a derivation), you can calculate the image-gradient.\nTo do: \n\n\nCreate a new method:\npublic FloatProcessor getGradient (FloatProcessor In_X, FloatProcessor In_Y){}\n\n(In_X and In_Y are the derivatives in X- and Y-direction respectively)\n\n\nCheck if the input-images have the same dimensions, if not throw a fitting exception\n\n\nCreate a new FloatProcessor to store the resulting image\n\n\nIterate through the image and calculate the Gradient value for each pixel in the output-image\n\n\nReturn the resulting image-gradient\n\n\n\n4.3: User-Dialog\nAt this point your plugin contains everything needed to perform primitive edge-detection. \nAs a final step you will implement a simple user-dialog, which will allow the user to select between the three filters mentioned above. \nThe following code should be implemented in the run-method\nTo do:\n\n\nCreate a new GenericDialog\n\n\nCreate a String-array:\nString[] Filters = {"Sobel","Scharr","Prewitt"};\n\n\n\nAdd a popup-menu to select which filter you want to use \n\n💡 Tip: Check the ImageJ-API to see how popup-menus are implemented \n\n\n\nShow the dialog\n\n\nCheck if the dialog was cancelled. If it was, terminate the plugin \n\n\nGet the index (in the popup-menu) of the selected filter\n\n\nPerform the edge-detection using the selected filter and the methods you implemented\n\n\nShow your result\n\n\n\n4.4: Project-Report\nThe part of your report concerning Task_4 should contain the following:\n\nA short description on how these primitive Edge-Detection-Filters work\nPossible limitiations, which would require a more sophisticated approach to edge-detection\nImages you generated with your code\n\nNext\n"
+}
+
+{
+"title": "Project Work 3 - Otsu",
+"url": "https://mt2-erlangen.github.io/otsu/",
+"body": "Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n3: Otsu's Method\nOtsu's method is a commonly used algorithm to compute the ideal threshold-value for image-segmentation. It is used in cases where the image-histogram is bimodal (meaning it contains two distinct peaks) to find the ideal "middle ground". \nWe highly recommmend that you have a look at the original publication from 1975 regarding the algorithm (Access should be granted if you try to access it using the university internet).\n\n3.1: Theory\nOtsu's method works by maximizing the between class variance σB² which is defined as:\n\nσB2 (θ) = P1(θ) \t· P2(θ) · (μ1(θ) - μ2(θ))2 \nwith\nP1(θ) = $\\sum_{i = 0}^{\\theta} h(i)$ (≙ number of pixels below the threshold (background))\nP2(θ) = 1 - P1(θ) = $\\sum_{i = \\theta +1}^{L-1} h(i)$ (≙ number of pixels above the threshold (foreground))\nμ1(θ) = $\\frac{1}{P1(\\theta)}$ $\\cdot$ $\\sum_{i = 0}^{\\theta} (i+1)h(i)$ (≙ mean intensity of the background)\nμ2(θ) = $\\frac{1}{P2(\\theta)}$ $\\cdot$ $\\sum_{i = \\theta +1}^{L-1} (i+1)h(i)$ (≙ mean intensity of the foreground)\n\nwith h(i) being the normalized histogram of the image, θ being the current threshold and L being the length of the histogram-array.\n\n3.2: Coding\nIn order to implement this algorithm, you will need to:\n\nGenerate the histogram of the image\nUse the histogram to determine P1(θ) and P2(θ) for all possible θ's\nUse these values to calculate μ1(θ) and μ2(θ) for all possible θ's\nCalculate σB² (θ) for all possible θ's\n\nMoving foreward, these steps will be explained in further detail. \nSince your code for this task can get rather long, you should pay attention to an orderly programming style to avoid difficulties while debugging later on. You can also add comments to your code to help you keep track of your work. \nTo do:\n\nOpen the Task_3_Otsu-class and take note of the empty methods provided. Each of these methods will be performing one of the calculations detailed above. \n\n \n\n\nComplete the method:\n public double[] getHistogram(ImageProcessor in) {}\n\na. Create a double-array of appropriate size to store the histogram-values\nb. Iterate through the input-image and update the corresponding histogram-entry for each pixel's value\nc. Normalize and return the histogram. \n\n\n\n 📝 Note: \n Normalizing refers to converting the histogram to a probability distribution. If you are unsure how to do that, have a look at the original publication \n\n\n\n\nComplete the methods to compute P1(θ), P2(θ), μ1(θ) and μ2(θ):\npublic double[] getP1(double[] histogram){}\npublic double[] getP2(double[] P1){}\npublic double[] getMu1(double[] histogram, double[] P1){}\npublic double[] getMu2(double[] histogram, double[] P2){}\n\nP1(θ) and P2(θ):\n\n\nConsider which values for θ are possible in an 8-bit grayscale image\n\n\nIterate through the possible values of θ and calculate P1(θ) and P2(θ) for each instance \n\n\n\nμ1(θ) and μ2(θ):\n\nCalculate the values for μ1(θ) and μ2(θ) according to the formulas provided above. \n\n\n📝 Note: \nPay attention to the possibility of dividing by zero.\nYou can handle this, by checking beforehand, if you will be dividing by zero and simply dividing by a very small number instead. We recommend you use 10e-10\n\n\n\n \n\nDetermine the values for σB² (θ) in the method: public double[] getSigmas(double[] P1, double[] P2, double[] mu1, double[] mu2) {}\n\na. Create a new double-array of suitable length\nb. Calculate σB² (θ) for each value of θ and store it in the array you just created\nc. Return the array of sigmas\n\n \n\n\nFind the maximum of your sigmas-array using:\n public int getMaximum(double[] sigmas){}\n\nDetermine the index (within the array of possible σ's) of the maximum value for σB² (θ) and store the index as an int-variable\n(In case there is no definite maximum, you can simply select the σ with the highest index, as this adds the least amount of extra programming)\nThe maximum value this method returns is your Otsu-Threshold-Value\n\n\n\n\n\nComplete the method: \npublic ByteProcessor otsuSegmentation(ImageProcessor ip) {}\n\nThis method will combine all the steps for calculating the Otsu-Threshold, as well as return the Image after having applied the Otsu-Threshold and print the determined value to the terminal. \n\na. First apply an illumnation-correction to the input image. To do this, inherit the methods you implemented in Task_1 by using:\nTask_1_Threshold Threshold = new Task_1_Threshold();\n\nYou can call methods belonging to the Threshold-Object like this: Threshold.correctIllumination().\nb. Use the "illumination-corrected" image to perform all of the calculations you implemented \nc. Apply a Thresholding-operation to your image using the determined Otsu-Threshold and store the result in a ByteProcessor. \nd. Print the Otsu-Threshold to the terminal and return the result-ByteProcessor\n\n\n\nComplete the run-method such that it applies the Otsu-Segmentation-Process to the Input-Image and displays the resulting image.\n\n\nTo check your code you can perform an Otsu-Segmentation of the "Cells"-image.\nYour plugin should return the following: \n\n\n3.3: Project-Report\nThe part of your report concerning Task_3 should contain the following:\n\nA brief explanation of what Otsu's method is\nWhat it aims to achieve and how \nIts limitations\nExample of your segmentation\nIn the original publication, Otsu mentions that "An optimal threshold is selected automatically and stably, not based on the differentiation (i.e. a local property such as valley), but on the integration (i.e., a global\nproperty) of the histogram." Explain what this means, especially where the integration comes from. \nCompare the results to the naive thresholding method \nOtsu's method, while still applied and useful in practice, has several shortcomings. Discuss two of them and name examples of current methods that can be applied to similar problems that solve these issues, by providing a citation and briefly explaining them. \n\nNext\n"
+}
+
+{
+"title": "Project Work 2 - Segmentation",
+"url": "https://mt2-erlangen.github.io/segmentation/",
+"body": "Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n2: Segmentation\nFor your second task, you will be implementing a plugin, which will be capable of evaluating the quality of a segmentation by comparing it to a given reference-image. In clinical practice these reference images can be attained through manual segmentation of the image by a skilled physician.\nIn your case the provided reference image will look like this:\n\n\n2.1: A new class\nIn order to quantify the quality of your segmentation, you will be calculating the values for Sensitivity and Specificity, which were introduced in your blackboard-exercise. In addition, you will be creating a dedicated class to store and access these values. \nTo do:\n\nCreate a new class in the src-Folder named EvaluationResult \nCreate the class-variables sensitivity and specificity (both double)\nImplement a constructor:public EvaluationResult ( double specificity , double sensitivity ){}\n\n\nImplement getter-methods for both values: public double getSpecificity (){}\n public double getSensitivity (){}\n\n\n\n\n2.2: The Plugin\nThe rest of the code for this task will be implemented in the provided class Task_2_EvaluateSegmentation.\nIn order to calculate the values for Sensitivity and Specificity, you will need to assign a "state" to each pixel of your segmented image. The states in question are:\nState\nTP"True Positive" → the pixel was correctly identified as part of the target\nTN"True Negative" → the pixel was correctly identified as background\nFP"False Positive" → the pixel was falsely identified as part of the target\nFN"False Negative" → the pixel was falsely identified as background\n\nFor decerning which of these cases applies to a given pixel, the reference image is used as the "correct" segmentation.\nThe values for Sensitivity and Specificity can then be calculated as follows: \n\n Sensitivity = TP/(TP+FN) \n Specificity = TN/(TN+FP) \n\nTo do:\n\nCreate a new method: private EvaluationResult evaluateSegmentation ( ImageProcessor\n segmentation , ImageProcessor reference ){}\n\n\nCheck if both images have the same dimensions - if not return null\nIterate over both images and count up the number of occurrances for each state \nCalculate the values for Sensitivity and Specificity using the formulas listed above\nCreate a new EvaluationResult-object to store these values and return it\n\n\nNow that you have created a method which perfroms the actual evaluation, you will need to implement the run-method in order to apply the plugin to an image. \nTo do:\n\n\nUse the IJ.openImage()-method to open a window, which allows the user to select the reference image.\n\n\nCheck wether the reference image has been loaded successfully - if not throw a fitting exception\n\n💡 Tip: \nCheck the ImageJ-API to see how the method behaves when no image has been loaded\n\n\n\nOnce the image was loaded successfully, apply your evaluateSegmentation()-method and print your results\n\n📝 Note: \nAs a test for your code, you could for example choose the cells_reference image as both "segmentation" and "reference". The plugin should then return 1.0 for both values.\n\n\n\n\n2.3: Project-Report\nThe part of your report concerning Task 3 should contain the following:\n\nA brief explanation as to what TP, TN, FP, FN mean\nThe formulas for Specificity and Sensitivity\nA brief explanation on what Specificity and Sensitivity mean in the context of image-segmentation\n\nAdditionally you should also include your own results from this exercise:\n\nUsing your plugin from Task 1 generate 6 different segmentations of the "cells"-image using approapriate hyperparamters. \nUse the plugin you implemented in this task to evaluate each segmentation \nDisplay your results in an appropriate way \nName two other ways to evaluate how good the segmentation is\n\nNext\n"
+}
+
+{
+"title": "Project Work 1 - Thresholding",
+"url": "https://mt2-erlangen.github.io/thresholding/",
+"body": "Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n1: Thresholding and Illumination-Correction\n1.1: Introduction\nYour first task consists of implementing an ImageJ-Plugin capable of performing a classic thresholding operation, as well as correcting for uneven illumination within an image. \nTo get you started, you have been provided with an incomplete class called Task_1_Threshold. \n\n1.2: Thresholding\nThe concept of thresholding - as the name implies - is based on evaluating an image pixel by pixel and checking each time, whether it falls above or below a given threshold-value.\nIf the pixel value in question is above the specified value, it will be set to white. If not it will be set to black. \nTo do:\n\n\nCreate a new method:\npublic ByteProcessor threshold ( ImageProcessor ip , int threshold ){} \n\n\n\nCreate a new ByteProcessor to store your result\n\n\nIterate over the entire input image and check the threshold-condition for each pixel\n\n\nSet each pixel in the output - ByteProcessor according to your evaluation\n\n\nReturn your result\n\n\n\n 📝 Note: \n Do not use inbuilt methods provided by ImageJ to perform the thresholding operation \n \n\n1.3: Illumination-Correction\nFor cases where the illumination of the image is uneven, you will now add the functionality to perform Illumination-Correction.\nTo do:\n\n\nCreate a new method:\npublic ByteProcessor correctIllumination ( ImageProcessor ip ){}\n\n\n\nConvert the input image to a FloatProcessor (make sure, that the original image remains unchanged)\n\n\nApply a Gaussian Filter to the newly created image ($\\sigma$ = 75) by using the blurGaussian()-function provided by ImageJ.\n\n\nDivide the original image by the filtered image (result should also be a FloatProcessor)\n\n\nConvert your result to a ByteProcessor and return it\n\n\n\n 💡 Tip: \nThe division of two images can simply be performed by iterating over them and performing it \"pixelwise\". \nThere is however a method provided by ImageJ, which allows you to move (copy) the entire image-data of one image to another, while applying a simple operation (such as division) to every pixel of both images in one go. Check the ImageJ-API in case you want to use this method.\n\n\nTo allow you to test your results, the run-method already contains code for a simple user interface, which gives you the option to select a value for your threshold, as well as let you choose whether or not you want to correct the illumination before thresholding. This code has been commented out to avoid causing errors by calling methods you had not implemented yet.\nIt pays to have a look at this code now, as you will eventually be creating a few dialogues of your own in later tasks.\nConsider using the "Cells" image to try out your code, since it will be the image you will be working with for the rest of your project. \n\n1.4: Project Introduction\nTo begin the written section of your Final Project, you will first need to come up with an introduction. This introduction should:\n\nCapture the readers interest with a short motivation of the project \nSummarize and contextualize the approach to other research methods\nPosition your approach with respect to other approaches\nDefine the research problem and problem statement\nGive an overview of the paper's structure\n\n1.5: Project-Report\nThe part of your report concerning Task_1 should contain the following:\n\nA brief description of the methods you implemented\nProvide a mathematically sound formulation of the thresholding operation\nA short discussion on why it may be necessary to correct the illumination in microscopy-images\nImages you generated with your code, that showcase what you described \nCreate a figure that shows a few examples of the image before and after thresholding. What does correctIllumination do? \n\nNext\n"
+}
+
+{
+"title": "Project Work 0 - Introduction",
+"url": "https://mt2-erlangen.github.io/introduction/",
+"body": "Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\nDisclaimer\nThis is a short introduction with general information and best practices including project report guidelines. Thoroughly read it and stricly follow all rules. We have also prepared a video with all necessary information about the report. \nWe provide you with a basic java template including some useful helper functions. You have to use this template as the starting point of your project. For more information on the installation have a look at our getting started guide.\nFurthermore, we provide a latex-template that you should use. It gives a more detailed structure for the report. Don't change the order and replace all images with images generated from your own implementation.\nIn case you are working on CIP machines you may run into quota issues. You can fix these issues with our guide.\nPlease also note that you can connect remotely to CIP machines using a remote SSH connection\nIntroduction:\nThis project aims to introduce you to some fundamental image-processing-techniques which find application in a large variety of fields. \nSince you are studying to become biomedical engineers, you will mainly be working with an image of cells, as a simple example of images you might encounter over the course of your scientific career.\n\nThe techniques you will be working with are the following: \n\nBasic Thresholding / image-segmentation\nEvaluation of your segmentation\nOtsu-Segmentation\nPrimitive edge-detection\nCanny edge-detection\n\nBy the end of this project, you will have built a set of ImageJ-Plugins that are capable of performing all of these operations. In addition to that, you will be documenting your progress and results in the form of a written Project-Report. \nThis is why at the end of every task you will find a number of bullet-points detailing which topics you should include in your report. \nThe coding section of your project will be written in Java using IntelliJ as the editor of choice. You should already be familiar with coding in IntelliJ from lectures like AuD-MT as well as from your MT2 computer-exercises.\nYour written project report will be written in LaTeX using the online editor Overleaf. \nGeneral Information\nThe project report, as well as the coding, are individual work. As such, you need to submit them individually. Also, do not use any built-in methods that we do not specifically allow.\nNote: we'll check for plagiarism.\nReport Guidelines\nThe project report can be written in either English or German. Please write between 4 and 7 pages of text, not counting the images.\nWe expect you to:\n\n\nUse the LaTeX template we provide\n\nLaTeX template link\nDo not modify the style or the formatting. No ornaments for page numbers!\nThe template defines the overall structure of your project. You have to fill in all the gaps.\nDo not change the order of the sections in our template.\nDo not change the titles of sections or subsections.\nDo not change the order of the figures in the project. You can optionally add new figures to the report.\nWe will only count answers that appear in the correct subsection of the report. If you want to avoid repeating yourself, use \\label{} and \\ref{}.\nThe template contains examples for all commands necessary for the report. It is allowed to import and use other packages if desired. \n\n\n\nUse scientific references in your explanations to clearly separate your work from the work of others:\n\nUse the bibliography (see template Bib/bibliography.tex) and keep the citation style provided in the template.\nThe bibliography must be sorted (either alphabetically when using the Name/Year citation style or\nby the order you use them in the text when numbering the sources).\nDo not use more than two references that are websites only. \n\n\n\nAll symbols in equations need to be explained in the text.\n\n\nAll equations, figures and tables, if applicable, have to be numbered and referenced in the text.\n\nAll your figures should look professional.\nThey should not be blurry or hand-drawn and images should not have a window border of ImageJ.\nThey should not overlap with the text.\nAll figures need to have captions giving a brief description what the figure shows. The caption should be below the figure.\nLabel all axes in all plots and coordinate systems!\nA list of figures is not needed.\nReplace the images in the report template with images from your own implementation applied to knee data.\n\n\n\nDo not use abbreviations without introducing them. E.g., the first time you should write "Magnetic Resonance Imaging (MRI)".\nAfter that, "MRI" is enough.\n\n\nJust like in storytelling, connect the context of the project report, so everyone can see the flow.\n\n\nDo not use footnotes!\n\n\nCheck your spelling: there shouldn't be any obvious spelling errors that can be detected by a spell checker.\n\n\nTo obtain all the points for the content of your report, additional to the above\n\nCheck whether you have addressed all the questions in the task description.\nCheck whether you have provided all the result figures and a detailed explanation of them.\n\nGuidelines for the Use of Writing Assistants\nWe welcome students to use writing assistants to enhance the quality of the written report. However, we would like to point out that\nstudents are responsible for the correctness of the content, and that scientific references are mandatory to verify all the claims made in the report.\nIf you decide to use any writing assistant, we ask you to add the tool to the list of references.\nThe use of spell-checking and translation software is encouraged and can be done without adding them to the list of references.\nNext\n"
+}
+,
+
+{
+"title": "Project Work 6 – Iterative Reconstruction and Conclusion",
+"url": "https://mt2-erlangen.github.io/archive/2020/reconstruction/",
+"body": "Iterative Reconstruction\nUsing backprojection, we could achieve a blurry reconstruction result.\nThe Filtered Backprojection algorithm solves this problem by applying a filtering step before backprojection.\nFor the project work, we will take a different approach.\nIn the last section, you measured the error between your reconstruction and the ground truth volume.\nHowever, this is only possible when doing a simulation and not when reconstructing an unknown real object.\nWhat we can do instead is meassuring the error in the projection domain by simply projecting the reconstruction!\nImplement the following method to use with our reconstructionProjector:\n // In mt/Projector.java\n public void reconstructIteratively(Image meassuredProjection, int sliceIdx, int numIterations)\n\nIt should\n\ncall projectSlice on volume to obtain a projection of our reconstruction\ncalculate an error image subtracting singogram.getSlice(sliceIdx) from meassuredProjection\nreplace the current slice of singogram by our error image\ncall backprojectSlice with the current sliceIdx\nrepeat all this for numIterations iterations\n\n\nSo we're now doing an reconstruction of the error sinogram and adding it to our blurry image.\nDoes this reduce our error?\nOur reconstruction algorithm is now finished. But it operates only on 2-d slices.\nCreate 3-d versions of projectSlice, backprojectSlice and reconstructIteratively:\n public void project()\n public void backproject()\n public void reconstructIteratively(Volume measuredProjections, int numIterations)\n\nAll they should do is calling their 2-d version for each slice.\nYou should now be able to reconstruct volumes.\nHint: You can use the following construct instead of a for-loop to enable multi-threaded calculation.\n // You have to replace `var` by `java.util.concurrent.atomic.AtomicInteger` when using Java 1.8\n var progress = new java.util.concurrent.atomic.AtomicInteger(0);\n IntStream.range(0, sinogram.depth()).parallel().forEach(z -> {\n System.out.println("Progess: " + (int) (progress.incrementAndGet() * 100.0 / (double) sinogram.depth()) + " %");\n //Do stuff here for slice z\n ...\n });\n\nProject Report\nFor the project, describe how your iterative reconstruction algorithm works. You should not mention implementation details\nlike variable or function names. Compare it with the Filtered Backprojection algorithm! It's not necessary to explain \nFiltered Backprojection Algorithm in detail. Just highlight the main difference.\nTest your reconstruction algorithm on a slice of a CT reconstruction of the Cancer Imaging Archive.\nMeasure the error of the reconstructed slices after each iteration (so call reconstructIteratively with numIterations == 1).\nInclude a figure showing this error in dependence of the iteration number in the project report.\nInclude images comparing ground truth, the backprojected slice and the result after a few iterations.\nComment on the error and the images in your text.\nDoes the result of the iterative reconstruction look better than solely using backprojection?\nThis part of the project report should be no longer than 1.5 pages.\nConclusion\nIn the last part, summarize want you have implemented and explained in your project report.\nReview the shortcommings of your simplified approach and how they could be mitigated in future.\nDraw a conclusion on your work!\nThis part of the project work should be about a quarter page long and should contain no images.\nSubmission\nSubmit your project report as a PDF and your entire project folder of your code until August 16 23:55h.\nYour project must compile as a whole!\nMake sure that you had a last look at our checklist.\nEvaluation\nWe hope you had a fun project work!\nYou can help us to improve the instructions for next year!\nPrevious section\n"
+},
+
+{
+"title": "Project Work 5 – Backprojection",
+"url": "https://mt2-erlangen.github.io/archive/2020/backprojection/",
+"body": "Backprojection\nIf we have a look at the sinogram values corresponding to one detector position we get some information about the projected object.\nFor instance, we can see the profile of the projected circle in the following image.\n\nHowever, if we have no access to the original volume slice we can not tell anything about the distance of the object to the detector.\nAll the following situations would generate the same projection!\n\nSo apparently, we get some information in the direction of the detector plane, but all information orthogonal to the detector plane\nis lost.\nSo one thing that we can do if we want to perform a reconstruction from the sinogram is to take the information in direction of the detector plane\nand uniormly smear it into the direction orthogonal to the detector plane in a range where we assume the object is located.\nWe call this process backprojection.\n\n\n \n\n\n The backprojection smears the value of the projection uniformly over the paths of the rays\n\n\nUse the following method, that is calculating the value that we want to smear back.\n // in mt.Projector\n public float backprojectRay(mt.Image sinogramSlice, int angleIdx, float s) {\n sinogramSlice.setOrigin(0.f, -sinogram.physicalHeight * 0.5f);\n return sinogramSlice.interpolatedAt(angleIdx * sinogram.spacing, s) // * sinogram.spacing is necessary because spacing is not valid for our angle indices (actually each coordinate should have their own spacing. That's the revenge for us being lazy.).\n / (volume.physicalWidth() * Math.sqrt(2)) // we guess that this is the size of our object, diagonal of our slice\n / sinogramSlice.width() // we will backproject for each angle. We can take the mean of all angle position that we have here.\n ;\n }\n\nUse this method in backprojectSlice to backproject for each pixel x, y a horizontal line of the sinogram (all possible angles).\n // in mt.Projector\n public void backprojectSlice(int sliceIdx)\n // A helper method\n public void backprojectSlice(int sliceIdx, int angleIdx)\n\nTo do this \n\nCreate a loop over all angleIdx\n\nCall the helper method for all angle indices (there are sinogram.width angles)\n\n\nIn public void backprojectSlice(int sliceIdx, int angleIdx)\n\nGet the slice with index sliceIdx\nLoop over all x, y of this image\nCalculate the physical coordinates from the integers x and y (times spacing plus origin!)\nCalculate the actual angle theta from the angleIdx\nCalculate s from the physical coordinate.\n\ns is the physical distance of the point $\\vec{x}$ from the ray through the origin at angle theta.\nCan you write down the line equation for this line?\nCan you use the line equation to calculate the distance of $\\vec{x}$ an the line through the origin?\n\n\nCall backprojectRay with angleIdx and s\nAdd this result of backprojectRay to current value at position x, y and save the sum at that position\n\n\n\n\n\n\nReconstruction\nNext, we want to try out whether we can use our backprojection to reconstruct a volume.\nWhenever we want to test whether a method works, we need something to compare it with.\nThe best possible result, the "true" values, is usally called ground truth.\nWe can use one of the reconstructions that we downloaded from the Cancer Imaging Archive as a ground truth volume.\nThe best possible result for our reconstruction is to come as close as possible to the original (ground truth) volume.\nCreate a file src/main/java/project/GroundTruthReconstruction.java.\n// Your name <your idm>\npackage project;\n\nimport mt.Projector;\nimport mt.Volume;\n\nclass GroundTruthReconstruction {\n\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n }\n}\n\nIt's important that we never mix up the ground truth with the results of our algorithm.\nCreate therefore an instance of Projector that will have the task to simulate projections.\nYou can call it groundTruthProjector.\nOpen a test volume and create an empty (all pixels 0) sinogram. They are needed to call the constructor of Projector.\nCall groundTruthProjector.projectSlice with an arbiray slice index.\n\nCreate an empty volume (all pixels 0) with the same dimensions as the ground truth volume and a copy of groundTruthProjector.sinogram().\nYou can add the following method to mt.Volume to create copies.\n // in mt/Volume.java\n public Volume clone(String name) {\n Volume result = new Volume(width(), height(), depth(), name);\n IntStream.range(0, depth()).forEach(z-> result.getSlice(z).setBuffer(Arrays.copyOf(slices[z].buffer(), slices[z].buffer().length)));\n return result;\n }\n\nCreate a new projector reconstructionProjector with the empty volume and the copy of our sinogram.\nUse backprojectSlice(...) to create your first reconstruction of a slice.\nA good way to test your implementation is to incremently apply more and more backprojections on your reconstruction.\nWhen you calculated the sinogram for SLICE_IDX you can use\n// in project.GroundTruthReconstruction.java\n\n// Choose the slice in the middle. Hopefully showing something interesting.\nfinal int SLICE_IDX = ????; // < Use a index for which you already calculated `projectSlice`\n\nfor (int i = 0; i< projector.numAngles(); i++ ) {\n try {\n TimeUnit.MILLISECONDS.sleep(500);\n } catch (InterruptedException e) {\n e.printStackTrace();\n }\n projector.backprojectSlice(SLICE_IDX, i);\n projector.volume().getSlice(SLICE_IDX).show();\n\n //// Optionally save the intermediate results to a file:\n //DisplayUtils.saveImage(projector.volume().getSlice(SLICE_IDX), "/media/dos/shepp_9_"+i+".png");\n}\n\nThis will wait 500ms between each backprojection. Do your rays meet at the right points? Use a simple test image with\nonly a single white circle if not. This should help you debug the issue.\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n Backprojection using 9 views\n Backprojection using 100 views\n \n\nProject Report\nFor the project report, you should briefly describe your backprojection reconstruction algorithm.\n\nDescribe your implementation, create at least one figure supporting your explanations.\nYou should never mention implementation details like for-loops or variable names, but important parameters like the number\nof projection angles you used\nTest your reconstruction algorithm\n\nusing a simple test image like a white circle or square\nusing a CT reconstruction that you downloaded . Cite the data source!\n\n\nHow do images look like? If they are blurry, what is the reason for that.\nShow the images in your project report.\nMention in one sentence how the Filtered Backprojection algorithm tries to solve that problem.\nHow big are your errors in comparison to the ground truth? If you are using a measure like the Mean Squared Error give\na formula defining it.\n\nThe content for this section should be about one page long. \nPrevious section\nNext section\n"
+},
+
+{
+"title": "Project Work 4 – Sinogram",
+"url": "https://mt2-erlangen.github.io/archive/2020/sinogram/",
+"body": "Sinogram\n\nNow, you should be able to generate sinograms from volume slice.\nGenerate two sinograms from two volume slices:\n\n\nOne sinogram from a simple test image. You can use for instance a white circle as I was doing in the last section.\n\n\nOne sinogram from a real CT reconstruction. You should cite the source of that image. The Cancer Imaging Archive even\nexplains you how to do that.\n\n\nShow both the volume slices and the sinograms.\nExplain to the reader what they are seeing. What is the radon transform?\nCan the radon transform be inverted?\n\n\nDo the sinograms contain some kind of symmetry? What is the reason for that?\nDo we really need a 360° degree scan?\n\n\n\n\nThis section should not be longer than one page.\nPrevious section\nNext section\n"
+},
+
+{
+"title": "Project Work 3 – Projection",
+"url": "https://mt2-erlangen.github.io/archive/2020/projection/",
+"body": "Projections\nTo understand how we can reconstruct a volume from X-ray images, we will first go through the process of how these X-ray images\nwere acquired from a physical volume.\nIn your project report you should...\n\nexplain the reader the physical process of X-ray attenuation and its material dependance.\nWhat materials in the human body attenuate more X-rays than others?\nHow is this represented in a CT reconstruction? Or in other words: what quantity does a CT reconstruction actually show?\nWhich kind of tissues appear therefore lighter and which darker?\nexplain the fundamental theorem hat describes this process (X-ray attenuation). Give a formula!\nExplain all the symbols that you use in the formula.\nprove your explanations with references, also provide the source of the formula.\n\nIn this project work, we will make some simplifying assumptions on the acquisition geometry.\nI made a drawing of the path of a single X-ray through a slice of our volume.\nSince this ray crosses the origin of our coordinate system we call it the principal ray.\n\nWhat are the coordinates $\\vec{x}_{P}$ of a point $P$ on the line of the principal ray in dependency of the angle $\\theta$ ($\\alpha$ in drawing) and the distance\nfrom origin $r$?\nIn reality, not all X-rays cross the coordinate origin. \nWhat are the coordinates $\\vec{x}_{P'}$ of a point $P'$ that is on a ray that hits the detector at coordinate $s$ in depedency of $r$ and $\\theta$?\nWe assume parallel rays.\nHint: What vector do you have to add to $P$ to get to $P'$?\n\nUnfortunally, the figure was written on paper and you shouldn't use hand drawn figures in the project report (as you can see they look ugly).\nPlease create one or two plots on the computer that are explaining your derived the ray equations to the reader of the project\nreport. Decide which information is important for the reader to understand your text.\n\nHow does the described situation differ from the actual acquisition geometry of modern CT scanners?\nWhat are the reasons for that? Could our simplified situation be implemented in reality?\n\n\n\nAfter Implementation: Describe briefly your implementation of the projection.\nDo not refer any Java classes or variable names!\nGive a formula for how you calculated the different projection angles.\nGive a formula for how you calculated the projection result for each ray.\nWhat physical effects were neglected in our simulation but are present in reality?\nName at least three non-idealities of real systems.\n\nThis part of the project work should be not longer than 1.5 pages.\nAfter some remarks from you: 2 pages are also ok..\nImplementation\nWe already have an volume class which can store the stack of image slices. Additionally, we also want\nto store the projection images (referred as sinograms) for these stack of image slices. For this create\ncreate a class mt.Projector in a file src/main/java/mt/Projector.java, which can hold both volume slices\nand the sinograms.\n// Your name here <your idm>\npackage mt;\n\nimport java.util.stream.IntStream;\n\npublic class Projector {\n // Our volume\n private mt.Volume volume;\n // Our sinogram\n private mt.Volume sinogram;\n\n}\n\nImlement a constructor for this class.\nIt should call this.volume.centerOrigin() and set the origin of each sinogram slice to 0.0f, -sinogram.physicalHeight() * 0.5f so we use the same coordinate\nsystems as in our drawings (it might be handy to set the origin of sinogram to 0.0f, -sinogram.physicalHeight() * 0.5f, -sinogram.physicalDepth() * 0.5f, requires a Volume.setOrigin method)\n public Projector(mt.Volume projectionVolume, mt.Volume sinogram) {\n ... // Implementation here\n assert sinogram.depth() == volume.depth() : "Should have same amount of slices";\n }\n\nConstructor and Setters/Getters:\n public void setSinogram(Volume sinogram)\n public Volume sinogram()\n\n public void setVolume(Volume volume)\n public Volume volume()\n\n public int numAngles() // == sinogram.width()\n\nWe assume that we aquire $N$ projections at $N$ different angles $\\theta$.\nAll angles should have the same distance from each other and divide $2\\cdot \\pi$ in $N$ equal parts (we always use radians for angles).\nImplement a method which computes angle value of $n^{th}$ angle index. We want to use the method such that at $n=0$ our angle value should return $\\theta=0$, at $n=1$ returns $\\theta= \\frac{2\\cdot \\pi}{N}$, and so on. Think of a general formula to compute the $n^{th}$ angle and describe it briefly in the description of your implmentation.\nUse this formula to implement the following method:\n // In mt.Projector\n public float getNthAngle(int angleIdx)\n\nNow, recall the formula you derived for the position of point $P'$ in the previous section.\nWe could directly use those coordinates $\\vec{x}$ to calculate the integral in Lambert-Beer's law for a ray with angle $\\theta$ and shift $s$ over a slice $\\mu$ on our computers:\n$$ I_{\\textrm{mono}} = I_{0} \\cdot \\exp\\left(-\\intop\\mu\\left(\\vec{x}\\right)\\textrm{d}\\vec{x}\\right) = I_{0} \\cdot \\exp\\left(-\\intop_{-R}^{R}\\mu\\left(r,\\theta, s\\right)\\textrm{d}r\\right)$$\n$R$ is the radius of the circle circumscribing our rectangular slice. You can see it in the drawing.\nThe path integral goes along the path marked in yellow in the drawings.\nWe are only interested in the value of the line integral\n$$ P(\\theta, s) = \\intop_{-R}^{R}\\mu\\left(r, s, \\theta\\right)\\textrm{d}r $$\nand we have to replace the integral by a sum (computers cannot calculate integrals directly)\n$$ P(\\theta, s) = \\sum_{r=-R}^{R}\\mu\\left(r,\\theta, s\\right) \\cdot \\mathtt{spacing}$$\nCalculate this sum for a fixed $s$ and $\\theta$ on a slice of our volume!\nYou can use volumeSlice.interpolatedAt(x,y) to deterime $\\mu(\\vec{x})$ and access values of our slice.\n // in mt.Projector\n public float projectRay(mt.Image volumeSlice, float s, float theta)\n\nWe have now calculated one value of one of the gray rays on our slice which translates to one point in our sinogram.\n\nNext we want to call this function for every ray and every pixel of our sinogram in the following method:\n // in mt.Projector\n public void projectSlice(int sliceIdx) {\n\nTo do that ...\n\n\nGet the slice sliceIdx from this.volume using getSlice\n\nThis is a slice of our volume with coordinates $x$ and $y$.\n$x$ runs from left to right\n$y$ runs from top to bottom\n\n\n\nGet the sinogram for that slice sliceIdx from this.sinogramm using getSlice\n\nThis is a slice of our sinogram with physical coordinates $s$ and $\\theta$.\n$\\theta$ runs from left to right\n$s$ runs from top to bottom\n\n\n\nIterate over each pixel of the sinogram. I would use angleIdx, sIndex as a loop variables.\n\nCalculate the actual value of s from sIndex.\nCalculate theata from angleIndex by calling the function getNthAngle\nCall projectRay with s and theta\nSave the result to sinogram at positions angleIndex and sIndex\n\n\n\nHint Computing s from sIndex is just using the physical coordinates and shifting the origin of $s$ axis in\nthe sinogram to the center.\nThis can be done by muliplying sIndex with sinogram.spacing() (pixel size of the detector) and adding\nsinogram.origin()[1] (== -sinogram.physicalHeight() * 0.5f).\nWe recommend you to test your algorithm using a simple image.\nChoose a good size for the sinogram to capture the whole image (e.g. height == volume.height).\nFor simplicity, you do not need to change the spacing of the volume or the sinogram.\n\n \n \n \n\n \n Simple test slice\n Sinogram of that slice\n\n\nI used a high number of 500 angles to get a near square image.\nWhen you are using less angles the width of your sinogram will be smaller.\nUse less angles to compute the results faster.\nYou may also apply projectSlice on all slices and display the sinogram.\nCtrl+Shift+H should reveal a rotating torso when using one the Cancer Archive scans:\n\n \n \nOr of the test image above\n\n \n \nPrevious section\nNext section\n"
+},
+
+{
+"title": "Project Work 2 – Volumes",
+"url": "https://mt2-erlangen.github.io/archive/2020/volume/",
+"body": "Getting started\nImportant: You have to work alone on your project work. No team partners allowed anymore 😔!\nCT reconstruction treats the problem of recovering a three-dimensional volume from a set of X-ray images.\nSo we will need two classes that represent our volume and our stack of X-ray projections.\nIt turns out that we can interpret our projections and our volume just as a list of 2-d images.\n\n\n\n\n\nA volume: very much just multiple images stacked one over another\n\n\nCreate a class mt.Volume\n// Your name <your idm>\n// No team partner... So sad 😢!\n\npackage mt;\n\nimport java.util.Arrays;\nimport java.util.stream.IntStream;\n\npublic class Volume {\n // Here we store our images\n protected mt.Image[] slices;\n\n // Dimensions of our volume\n protected int width, height, depth;\n\n // Spacing and origin like for mt.Image\n protected float spacing = 1.f; // spacing is now our voxel size\n protected float[] origin = new float[]{0, 0, 0}; // position of the top-left-bottom corner\n\n // A name for the volume\n protected String name;\n\n}\n\nCreate a constructor. Remember: width, height, depth, name must be set and slices must be created as an array.\nWe need depth images of size width $\\times$ height for the slices.\n public Volume(int width, int height, int depth, String name)\n\nGetters/setters...\n public int width()\n public int height()\n public int depth()\n public float physicalWidth() // width * spacing()\n public float physicalHeight() // height * spacing()\n public float physicalDepth() // depth * spacing()\n\n public mt.Image getSlice(int z) \n public void setSlice(int z, mt.Image slice)\n\n public float spacing()\n public void setSpacing(float spacing) // should also set spacing also for all slices!\n public String name()\n public float[] origin()\n\n // should set origin to (-0.5 physicalWidth, -0.5 physicalHeight, -0.5 physicalDepth) and call centerOrigin on each slice\n public void centerOrigin()\n\nNow comes the interesting part: visualize the volume!\nYou will need to update src/main/java/lme/DisplayUtils.java file and use the following command to visualize the volume.\n public void show() {\n lme.DisplayUtils.showVolume(this);\n }\n\nYou can download a volume from the Cancer Imaging Archive.\nUse one of the following links (it does not matter which CT volume you use).\n\nVolume 1\nVolume 2\nVolume 3\n\nUnzip the folder and drag the whole folder onto a running ImageJ, e.g. by the following code snippet in a file src/main/java/project/Playground.java.\n(if you have problems unzipping the files you might try the official downloader from the website. You need their downloader to open the *.tcia files).\n// This file is only for you to experiment. We will not correct it.\n\npackage project;\n\nimport mt.Volume;\n\nclass Playground {\n\n public static void main(String[] args) {\n // Starts ImageJ\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n // You can now use drag & drop to convert the downloaded folder into a *.tif file\n \n }\n\n}\n\n\nSave it the opened DICOM as a *.tif file (File > Save As > Tiff...).\nThere are more smaller test volumes on studOn.\n\n \n \n\n\n\nOpen the saved tiff file in the main of a file src/main/java/project/Playground.java:\n// This file is only for you to experiment. We will not correct it.\n\npackage project;\n\nimport mt.Volume;\n\nclass Playground {\n\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n \n Volume groundTruth = DisplayUtils.openVolume("path/to/file.tif");\n groundTruth.show();\n \n }\n\n}\n\n\nYou can now scroll through the different slices.\nvia GIPHY\nHere a short summary of handy functions of ImageJ when working with CT images.\n\nCtrl+Shift+C: Brightness and Contrast\nCtrl+Shift+H: Orthogonal Views (view volume from three sides)\nAfter selecting a line: Ctrl+K Line Plot\nCtrl+I: Get patient information of a DICOM\nLook at a 3-d rendering with ClearVolume\n\nPrevious: Introduction \nNext: Forward Projection\n"
+},
+
+{
+"title": "Project Work 1 – Introduction",
+"url": "https://mt2-erlangen.github.io/archive/2020/introduction/",
+"body": "Contents\n\nIntroduction Tafelübung 9. Juni\nVolumes\nProjection Tafelübung 16. Juni\nSinogram\nBackprojection and Reconstruction Tafelübung 23. Juni\nIterative Reconstruction and Conclusion\n\nIntroduction\nDuring this semester we will learn how computer tomography (CT) reconstruction algorithms work.\nYour first task is to find out more about CT and write an introduction for your project report.\n\nFind an informative title for your project report. "Project Report" and "Introduction" are not good titles.\nWhat is computer tomography?\nWhat is the problem it tries to solve? When and how was it first introduced?\nWhat kind of electromagnetic radition is used to aquire the images?\nHow did modern CT devices improve over their predecessors? What is the typical spatial resolution of a state-of-the-art CT scanner?\nWhat are advantages and disadvantages of CT in comparison with other modalities. Include at least two advatages and\ntwo disadvantages.\nGive a short overview of the contents of the following sections of your project report.\nProof all your statements with references. You should use at least four distinct sources in your introduction that are\nnot webpages.\n\nThe introduction should not be longer than one page and but at least half a page. \nYour introduction and conclusion should not contain any images.\nPlease have a look on our checklist for a good project report.\n\n\nNext task\n"
+},
+
+{
+"title": "Exercise 6",
+"url": "https://mt2-erlangen.github.io/archive/2020/exercise-6/",
+"body": "Submission deadline: 29.06.20 23:55h\nIn the last exercise, we want to have a look at edge detection and segmentation.\nEdge Detection\n 7 Points\nOpen a test image in a new file src/main/java/exercise/Exercise06.java.\n// Your name\n// Team parnter name\npackage exercises;\n\nimport lme.DisplayUtils;\nimport mt.LinearImageFilter;\n\npublic class Exercise06 {\n public static void main(String[] args) {\n\t(new ij.ImageJ()).exitWhenQuitting(true);\n\tmt.Image cells = lme.DisplayUtils.openImageFromInternet("https://upload.wikimedia.org/wikipedia/commons/8/86/Emphysema_H_and_E.jpg", ".jpg");\n\n }\n}\n\nWe will use the Sobel Filter, to estimate the gradient of the image.\nThe Sobel Filter uses two filter kernels. One to estimate the x-component of the gradient and one for the y-component.\n\nCreate two LinearImageFilters with those coeffients. You can use filterX.setBuffer(new float[]{...})\nor setAtIndex to do that.\nFilter the original image with both of them!\n\n \n\t\n\t\n \n \n\tX component of gradient $\\delta_x$\n\tY component of gradient $\\delta_y$\n \n\nYou should now have two intermediate results that can be interpreted as the x-component $\\delta_x$\nand y-component $\\delta_y$of the estimated gradient for each pixel.\nUse those two images to calculate the norm of the gradient for each pixel!\n$$ \\left|\\left| \\nabla I \\right|\\right| =\\left|\\left| \\left(\\delta_x,\\ \\delta_x \\right) \\right|\\right| = \\sqrt{ \\delta_x^2 + \\delta_y^2}$$\n\nFind a good threshold and set all gradient magnitude values to zero that are below this values and all other to 1.f to\nobtain an image like this with a clear segmentation in edge pixels and non-edge pixels.\n\nSegmentation\n 3 Points\n\n Source: https://commons.wikimedia.org/wiki/File:Emphysema_H_and_E.jpg (cc-by-2.0)\nFor histologic examinations colored subtances called stains are used to enhance the constrast\nof different portions of the tissue.\nUse a suitable threshold to segment the individual sites with high contrast (0 background, 1 contrasted cells).\nYou can use the following method to overlay your segmentation with the original image.\n // In lme.DisplayUtils\n public static void showSegmentedCells(mt.Image original, mt.Image segmented) \n // You may also try `showSegmentedCells(cells, segmentation, true);` with the newest version of DisplayUtils\n\n\nImproving your Segmentation\nThis is optional and not required for the exercise.\nYou might want to go directly to the evaluation of this year's exercises:\nhttps://forms.gle/2pbmuWtmeTtaVcKL7\nYou may notice that by just choosing a threshold you may not be able to separate each individual structure.\n\nYou can try out some operations from the menu Process > Binary while you have your 0/1 segmentation focused.\nYou have to convert to 8-bit first. E.g.\n\n\n\nImage > Type > 8-bit\nProcess > Binary > Watershed\n\n\nOr "click" on menu items in your program code.\n segmentation.show();\n IJ.run("8-bit");\n IJ.run("Watershed");\n DisplayUtils.showSegmentedCells(cells, segmentation);\n\n\nEvaluation\nWe redesigned the exercises from scratch for this semester.\nTherefore, some of the exercises might have been difficult to understand or too much work. \nWe are glad for your feedback to help future semesters' students😊:\nhttps://forms.gle/2pbmuWtmeTtaVcKL7\n\n\n\n\n\n"
+},
+
+{
+"title": "Exercise 5",
+"url": "https://mt2-erlangen.github.io/archive/2020/exercise-5/",
+"body": "Submission\nSubmission deadline: 08.06.20 23:55h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nQuanitfying Errors\n3 Points\nIn Exercise03, we have seen that we can use linear low-pass filters, like the Gauss filter, to reduce \nthe amount of noise in images. Let's test that!\nAdd two static methods to the Image class:\npublic static float meanSquaredError(Image a, Image b);\npublic static float psnr(Image a, Image b, float maxValue); // maxValue is 255 for PNG images\n\n\n$$ \\mathrm{MSE}_{ab}= \\frac{1}{M} \\sum _{i=0}^{M} \\left(a_i - b_i\\right)^2 $$\n$$ \\mathrm{PSNR_{ab}} = 20\\cdot \\log_{10}(\\mathtt{maxPossibleValue}) - 10\\cdot \\log_{10}(\\mathrm{MSE}_{ab}) $$\n\nStatic also means that you will use them like float mse = Image.meanSquaredError(imageA, imageB);.\nOpen a test image and add some noise using addNoise in exercise.Exercise05 (src/main/java/exercise/Exercise05).\n (new ij.ImageJ()).exitWhenQuitting(true);\n Image original = lme.DisplayUtils.openImageFromInternet("https://mt2-erlangen.github.io/shepp_logan.png", ".png");\n original.setName("Original");\n \n Image noise = new Image(original.width(), original.height(), "Noise");\n noise.addNoise(0.f, 10.f);\n\n Image noisyImage = original.minus(noise); // You might also implement your own `plus` ;-)\n\nApply a Gauss filter (choose a good filterSize and sigma) on the noise image and compare the result with the original image.\nCan the error be reduced in comparision to the unfiltered noisy image? Also take a look on the error images that you can\ncalculate using your minus method of the class Image.\n\nHint: You can use a for-loop to try out different values for sigma.\nHint: You do not need to submit written answers to the questions in the text. Just do the correponding experiments!\n\nNon-Linear Filters\n3 Points\nA quality criterion for medical images are sharp edges.\nHowever, though the Gauss filter reduces the noise it also blurs out those edges.\nIn this exercise, we try to mitigate that problem using non-linear filters.\nNon-linear filters calculate similar to a convolution each pixel value in the output from a neighborhood of the\ninput image. Remember the sliding window from exercise 3? Non-linear filters do exactly the same.\n\nSource: https://github.com/vdumoulin/conv_arithmetic\nCreate a class mt.NonLinearFilter in the file src/main/java/mt/NonLinearFilter.java:\n// Your name here <your idm>\n// Your team partner here <partner's idm>\npackage mt;\n\nimport lme.WeightingFunction2d;\nimport lme.NeighborhoodReductionFunction;\n\npublic class NonLinearFilter implements ImageFilter {\n\n // Name of the filter\n protected String name; \n // Size of the neighborhood, 3 would mean a 3x3 neighborhood\n protected int filterSize;\n // Calculates a weight for each neighbor\n protected WeightingFunction2d weightingFunction = (centerValue,neighborValue,x,y) -> 1.f;\n // Calculates output value from neighbors and weights\n protected lme.NeighborhoodReductionFunction reductionFunction;\n\n public NonLinearFilter(String name, int filterSize) {\n this.filterSize = filterSize;\n this.name = name;\n }\n\n @Override\n public String name() {\n return name;\n }\n}\n\nAs you can see, NonLinearFilter uses two interfaces. You can copy them into your src/main/java/lme/ folder.\n// in file `src/main/java/lme/WeightingFunction2d.java`\npackage lme;\n\n@FunctionalInterface // Does nothing. But Eclipse is happier when it's there.\npublic interface WeightingFunction2d {\n // Assigns a neighbor (shiftX, shiftY) a weight depending on its value and the value of the pixel in the middle of the neighborhood\n float getWeight(float centerValue, float neighborValue, int shiftX, int shiftY);\n}\n\nand\n// in file `src/main/java/lme/NeighborhoodReductionFunction.java`\npackage lme;\n\n@FunctionalInterface\npublic interface NeighborhoodReductionFunction {\n // Calculates the output pixels from the values of the neighborhood pixels and their weight\n float reduce(float[] values, float[] weights);\n}\n\nImplement the method apply for NonLinearFilter.\n @Override\n public void apply(Image input, Image result)\n\nThe method should calculate each output pixel from a neighborhood. So\n\nCreate an array to hold the values of the neighborhood pixels. How many neighborhood pixels are there?\nLoop over each output pixel\n\nFill the array of neighborhood pixels with values from the input image (needs two inner loops)\nUse this.reductionFunction.reduce to determine the value of the output pixel. You can use null for the second parameter for now (we will implement weights later).\nSave the value to the output image (using setAtIndex).\n\n\n\nOverall, the method should look very similar to your LinearImageFilter.apply method.\nTo test your method, implement a MedianFilter in a file src/main/mt/MedianFilter.java as a subclass of NonLinearFilter.\n// Your name here\n// Team partner's name here\npackage mt;\n\nimport java.util.Arrays;\n\npublic class MedianFilter extends NonLinearFilter {\n\tpublic MedianFilter(int filterSize) {\n // TODO:\n super(...);\n reductionFunction = ...;\n\t}\n}\n\nThe MedianFilter is a LinearImageFilter with\nreductionFunction (values, weights) -> { Arrays.sort(values); return values[values.length / 2]; }\n(it sorts the values and takes the one in the middle).\nAll you need to do is to call the super constructor and set reductionFunction.\nDoes the median filter also reduce the noise in the image?\nBilateral Filter\n2 Points\nNext, we will implement the BilateralFilter.\npackage mt;\n\npublic class BilateralFilter extends NonLinearFilter {\n GaussFilter2d gaussFilter;\n\n public BilateralFilter(int filterSize, float spatialSigma, float valueSigma){\n ...\n }\n}\n\nThe bilateral assign a weight to each neightborhood pixel.\nSo modify your NonLinearFilter.apply method that it also creates a weights array and uses weightingFunction.getWeight to\nfill it. reductionFunction should now also be called with the weights array.\nThe bilateral has to parameters $\\sigma_{\\text{value}}$ and $\\sigma_{\\text{spatial}}$.\nFor large values of $\\sigma_{\\text{spatial}}$ the bilateral filter behaves like a Gauss filter.\nInitialize gaussFilter in the constructor. Set weightingFunction so that the weights $w_s$ of the Gauss filter are returned.\nSet reductionFunction. It should multiply each of the values with its weight and then sum the results up.\nYour BilateralFilter should now behave like a Gauss filter. Does it pass the test in GaussFilter2dTests when you\nuse BilateralFilter instead of GaussFilter2d?\nEdge-Preserving Filtering\n2 Points\nTo make our bilateral filter edge preserving, we have to use also $\\sigma_{\\text{value}}$.\nThe value weight $w_v$ is calculated as follows\n$$ w_v = \\exp\\left(-\\frac{\\left(\\mathtt{centerValue}-\\mathtt{value}\\right)^2}{2 \\sigma_{\\text{value}}^2}\\right) $$\nJust multiply with this value $w_v$ in weightingFunction. The total weight of a pixel will then be $w_v \\cdot w_s$.\nNow we have the problem that our weights will no longer add up to one! To solve this problem divide by the sum of weights\nin the reductionFunction.\nCan you reduce the error even more using the bilateral filter? My results look like this.\n\n \n \n \n \n \n \n \n Original\n Noisy\n Gauss filtered\n Bilateral filtered\n \n \n \n \n \n \n \n \n \n Error Unfiltered\n Error Gauss\n Error Bilateral\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+},
+
+{
+"title": "Exercise 4",
+"url": "https://mt2-erlangen.github.io/archive/2020/exercise-4/",
+"body": "Submission\nSubmission deadline: 01.06.20 23:55h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImage Transformations\nIn the previous exercises, we built a Signal and Image class for performing basic operations on the \ninput data. We also implemented various filters to process the data and remove noise. \nIn this exercise we will build on top of the image class and implement methods for performing image transformations.\nIn many medical applications there is a need to align two images so that we \ncan combine the information between the images. This can be due to the images coming from \ndifferent modalities like (CT and MRI) or in scenarios were you have an patient data at from \ndifferent time (before and after an surgery) and you want to compare between these two images. \nIn all these scenarios we use image registration bring the different images together.\nIn the below image, two x-ray views (1) and (2) are fused together to obtain the combined view(3)\nwhich produces more information for diagnosis. This is achieved using image registration between view(1) and view\n \nImage Source: Hawkes, David J., et al. "Registration and display of the combined bone scan and \nradiograph in the diagnosis and management of wrist injuries." European journal of nuclear medicine \n18.9 (1991): 752-756. \nOne of the crucial components of image registration is image transformations.\nIn this exercise we will implement basic image transformations. Additionally, we need to implement an \ninterpolation method to find out the image intensity values at the transformed coordinates. \n\nOverview of tasks\n\nWe will implement the following tasks for this exercise.\n\nHelper functions (a. Image origin, b. Interpolation)\nImage Transformation (a. Translation, b. Rotation, c. Scaling)\n\nWe introduce the basic theory about image transformations in theoretical background section.\nPlease read the theory before proceeding since we don't re-introduce everything in the task description. \nTask Description\n\nWe provide the main method for the task with an interactive ImageJ plug-in in the files\nsrc/main/java/exercises/Exercise04.java\nand src/main/java/mt/ImageTransformer.java\n\n0. Getting started\n1 Point\n\n\nFor Exercise 4 we provide a GUI that displays the image with different image transformation options.\n\n\n\nOnce you have all the transformations implemented you should be able to adjust the sliders and perform the desired transformations in an interactive manner.\n\n\nThe transformations requires an origin point about which we perform all the transformation.\n\n\nExtend the Image class with these three methods\n\n\n // store the origin points x,y as \n // a class variable\n public void setOrigin(float x, float y)\n\n // the origin() returns the {x,y} as float \n // array from the stored origin class variable. \n public float[] origin()\n\n // Sets the origin to the center of the image\n public void centerOrigin()\n\n\nTo ensure that everything is running, run the main function.\nWe already set the origin point for you in the file src/main/java/exercises/Exercise04.java\nTo ensure that everything is running, run the main function of Exercise04.\n\n1. Image interpolation\n4 Points\n\n\nSince the image transformations heavily relies on the interpolation, we first implement the interpolation method by extending the Image class with the following method:\n\n\npublic float interpolatedAt(float x, float y) \n\n\nThe method takes in a physical $(x,y)$ coordinate and returns the image intensity at that position.\nWe use bilinear interpolation to find the value at $(x,y)$ (described in the theory).\n\n\nWe can rewrite the interpolation equation using the linear interpolation formula when we want to interpolate between two points $x_1,x_2$ with function value $f(x_1),f(x_2)$ to find out the function value $f(x)$ at $x$.\n\n\n$$ \\frac{f(x) - f(x_1)}{x-x_1} = \\frac{f(x_2) - f(x_1)}{x_2 - x_1} $$\n\n\n\n\nSince we already know the difference $x_2 - x_1$ is either 1.0 if we have a pixel spacing of 1.0 or pixel spacing, we can simplify the above equation as follows:\n\n$$f(x) = f(x_1) + (x-x_1) (f(x_2) - f(x_1))$$\n\n\n\nYou can use the function below to compute linear interpolation between two points $x_1,x_2$ at $x$\n\n // Definition of arguments\n // diff_x_x1 = x - x_1 compute the difference between point x and x_1\n // fx_1 = f(x_1), pixel value at point x_1\n // fx_2 = f(x_2), pixel value at point x_2 \n\n float linearInterpolation(float fx_1, float fx_2, float diff_x_x1) {\n return fx_1 + diff_x_x1 * (fx_1 - fx_2);\n }\n \n\n\n\nWe now have an way to interpolate between two points in 1D. We need to extend this to 2D case such that we can use \nit for interpolating values in our image. An illustration of how this can be done is \nalready given in the theory section.\n\n\nImplementation detail We describe here possible way to implement the interpolation scheme.\n\n\nFind the 4 nearest pixel indices, for the given physical coordinate $(x,y)$. To do, this you have to transform\nthe physical coordinate to the index space of the image.\n\n\nHint: In physical space all the values of $x$ and $y$\nare computed from origin. So we just need to subtract the origin from the coordinates for this correction.\nx -= origin[0]\ny -= origin[1]\n\n\n\nPixel spacing also alters the physical coordinates and needs to be corrected for. \nThis can be done using just by dividing each coordinate by the pixel spacing.\nx /= spacing;\ny /= spacing\n\n\n\nHint: Since each pixel is a unit square you can round up and down each coordinate ($x$ and $y$) separately \nto get the 4 nearest pixels coordinates.\n\n\nInterpolate along an axis (here we choose the x-axis) initially using the linear interpolation \nfunction to obtain intermediate points.\n\n\nNow interpolate along the intermediate points (i.e you are interpolating along y-axis)\n\n\nNote: Take care of image origin and pixel spacing for the input coordinates before you perform any of the steps.\nAlso, always use atIndex and setIndex for accessing the image values. \nThis ensures that we handle the values at boundary correctly.\n\n\n\n\nExample:\nHere we look at a single point to understand how to implement our algorithm\n\n\nIf we have an input $(x,y) = (0.4,0.4)$, then the 4 nearest pixel coordinates are $(0,0)$,$(1,0),(1,1),(0,1)$\n\n\nInterpolating the values between the points $a = (0,0)$, $b = (1,0)$, find the intermediate \nvalue at point $I_1 = (0.4,0)$.\n\n\nSimilarly interpolate between $c = (0,1)$ and $d = (1,1)$ to find the intermediate value at point $I_2 = (0.4,1)$.\n\n\nNow we can just use the values at the intermediate points $I_1 = (0.4,0)$ and $I_2 = (0.4,1)$ and \nperform a linear interpolation in the y direction to obtain the final result at $(0.4,0.4)$.\n\n\n\n\n2. Image Transformation\n5 Points\nNow we can start with the implementation of ImageTransformer class.\n\nThe class consists of the following member functions for translation\n\n// Transformation parameters\npublic float shiftX; // tx\npublic float shiftY; // ty\npublic float rotation; // theta\npublic float scale; // s\n\n\n\nAlso use the interface ImageFilter abstract class which you have implemented in the previous exercises. \nThis can be done using implements keyword.\n\n\nAdd the method apply(Image input,Image output) which takes in two variables input and \noutput of Image class type. The input variable provides the input image to our transformer class. \nThe output variable is where the transformed image is stored.\n\n\nConsider each pixel in the image with index $(i,j)$. When we access an image pixel we get \nthe pixel intensity stored at the location $(i,j)$.\n\n\nHere $(i,j)$ represents the image coordinates $(x,y)$ and the pixel value at $(i,j)$ represents $f(x,y)$.\n\n\nWe want to transform $(x,y) \\to (x',y')$ and find the pixel value at the new location for a \ngiven set of input transformation parameters $t_x,t_y,\\theta,s$ to transform the input image coordinate $(x,y)$.\n\n\nLet us go over a possible approach to implement the apply method which \nimplements (translation,rotation and scaling). In addition, once we have the transformed coordinates $(x',y')$ we \ninterpolate the value at this coordinate to set the output value of the new image.\n\n\nWe can implement the transformations and interpolation using the equations defined \nin the theory section. \n\n\nHowever, from the implementation perspective it is much easier to ask what will be my output image value \nat the current position $(x',y')$ for the given transformations parameters.\n\n\nFor this we need to find the input coordinate $(x,y)$ for the given transformation parameters.\nThis mapping from $(x',y') \\to (x,y)$ is known as the inverse transformation.\n\n\nJust to recap our current aim is to iterate over the output image along each \npixel $(i,j)$ (also referred as $(x',y')$) and find the inverse transformation (x,y).\nOnce we find $(x,y)$ we can just interpolate the values in the input image at $(x,y)$ and\nset it to the output image value at (x',y').\n\n\nAn example code to accomplish this looks like below:\n\n\n// We need to compute (x,y) from (x',y')\n// We use xPrime,yPrime in the code to indicate (x',y')\n// Interpolate the values at (x,y) from the input image to get\nfloat pixelValue = input.interpolatedAt(x,y);\n\n// Set your result at the current output pixel (x',y')\noutput.setAtIndex(xPrime, yPrime, pixelValue);\n\n\n\n\nThe inverse transformations can be computed using the following equations.\n\n\nTranslation\n\n$x = x' - t_x$\n$y = y' - t_y$ \n\n\n\nRotation\n\n$x= x' \\cos\\theta + y' \\sin\\theta$\n$y= - x \\sin\\theta + y' \\cos\\theta$\n\n\n\nScaling\n\n$x= \\frac{x'}{s}$\n$y= \\frac{y'}{s}$\n\n\n\nImplementation detail Now you can directly use the above equations to implement translation, rotation and scaling.\nThe entire apply method for the ImageTransformer class can be implemented as follows:\n\n\nIterate over each pixel in the output image (although they are just the same as input initially).\n\n\nAt each pixel the index $(i,j)$ represents our coordinates $(x',y')$ of the output image\n\n\nApply the transformations using the equations described above to find $(x,y)$\n\n\nNow set the output image value at $(i,j)$ (also referred as (x',y')) from the interpolated values at $(x,y)$ \nfrom the input image.\n\n\nUse the setIndex() for setting the values of the output image and atIndex() for getting the values \nfrom input image.\n\n\nIn the above formulation we assume that we have pixel spacing of $spacing = 1.0$ and the \nimage origin at $(x_0, y_0) = (0,0)$.\n\n\nYou can extend this to work for different values of pixel spacing and origin.\n\n\nHint: Think of pixel spacing as a scaling and origin as a translation transformation. \n(apply both spacing and origin transformation to the input coordinates $(x,y)$ as $(x * px , y * py) + (x_0,y_0))$ \n\n\n\n\n"
+},
+
+{
+"title": "Exercise 3",
+"url": "https://mt2-erlangen.github.io/archive/2020/exercise-3/",
+"body": "Submission deadline: 25.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImages and 2-d Convolution\nIn this exercise, we finally to work with images. It's time to update the file src/main/java/lme/DisplayUtils.java to the newest version.\nThis should provide you the following methods to work with images:\n // Open a file\n public static mt.Image openImage(String path) \n\n // Download and open a file from the internet\n public static mt.Image openImageFromInternet(String url, String filetype) \n\n // Save an image to a file\n public static void saveImage(mt.Image image, String path) \n\n // Show images\n public static void showImage(float[] buffer, String title, int width) \n public static void showImage(float[] buffer, String title, long width, float[] origin, double spacing, boolean replaceWindowWithSameName)\n\n\nThey all work with the class mt.Image so let's create it!\nBefore that, add the following two methods to your Signal class (they are used by the tests of this exercise):\n // Needs: import java.util.Random\n public void addNoise(float mean, float standardDeviation) {\n\tRandom rand = new Random();\n\tfor (int i = 0; i < buffer.length; i++) {\n\t buffer[i] += mean + rand.nextGaussian() * standardDeviation;\n\t}\n }\n\n public void setBuffer(float[] buffer) {\n\tthis.buffer = buffer;\n }\n\nPS: The method addNoise is also useful to test your mean and standardDeviation calculation in exercise 2.\nCreate a long signal and add noise with a specific mean and standardDeviation.\nThe result of your mean and standardDeviation method should be approximatelly the same.\nmt/Image.java\n4 Points\nThe code for this section should go to src/main/java/mt/Image.java\nOur goal is to share as much code with our mt.Signal class. So mt.Image will be a subclass of mt.Signal.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\nimport lme.DisplayUtils;\n\npublic class Image extends Signal {\n\n\n}\n\nmt.Image has five members (apart from the ones inherited by mt.Signal).\n // Dimensions of the image\n protected int width; \n protected int height; \n\n // Same as Signal.minIndex but for X and Y dimension\n protected int minIndexX;\n protected int minIndexY;\n\n // For exercise 4 (no need to do anything with it in exercise 3)\n protected float[] origin = new float[]{ 0, 0 };\n\nAnd two constructors:\n // Create an image with given dimensions\n public Image(int width, int height, String name)\n\n // Create an image with given dimensions and also provide the content\n public Image(int width, int height, String name, float[] pixels)\n\nAs shown in the exercise slides, we will store all the pixels in one array, like we did in Signal.\nThe array should have the size width * height.\nminIndexX,minIndexY should be 0 for normal images.\n\n\nCall the constructors of the super class Signal in the constructors of Image.\nYou can call the constructor of a super class by placing super(...) with the respetive arguments in the first line of the constructor of the subclass.\nThe constructor public Image(int width, int height, String name, float[] pixels) does not need to create its own array (take pixels for buffer).\nBut you can check whether pixels has the correct size.\nLet's also provide some getters!\n // Image dimensions\n public int width()\n public int height()\n\n // Minimum and maximum indices (should work like Signal.minIndex/maxIndex)\n public int minIndexX()\n public int minIndexY()\n public int maxIndexX()\n public int maxIndexY()\n\natIndex and setAtIndex should work like in Signal except that they now have two coordinate indices.\natIndex should return 0.0f if either the x or y index are outside of the image ranges.\n public float atIndex(int x, int y)\n public void setAtIndex(int x, int y, float value) {\n\nRemember how we calculated the indices in the exercise slides. You have to apply that formula in atIndex/setAtIndex.\n\n\nAdd the method show to display the image\n public void show() {\n DisplayUtils.showImage(buffer, name, width(), origin, spacing(), /*Replace window with same name*/true);\n }\n\nOpen the image pacemaker.png in a file src/main/java/exercise/Exercise03 (in the same project as previous exercise):\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage exercises;\n\nimport mt.GaussFilter2d;\nimport mt.Image;\n\npublic class Exercise03 {\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n Image image = lme.DisplayUtils.openImageFromInternet("https://mt2-erlangen.github.io/pacemaker.png", ".png");\n image.show();\n\n }\n}\n\nThe image is from our open access book.\n\nmt.ImageFilter\n3 Points:\nLike in Exercise 1, we want to be able to convolve our image signal.\nInfact, we will learn a lot of new ways to process images.\nOften, we need to create an output image of same size.\nLet's create an interface (src/main/java/mt/ImageFilter.java) for that, so we only need to implement this once.\npackage mt;\n\npublic interface ImageFilter {\n default mt.Image apply(mt.Image image) {\n Image output = new Image(image.width(), image.height(), image.name() + " processed with " + this.name());\n apply(image, output);\n return output;\n }\n\n default void apply(mt.Image input, mt.Image output) {\n throw new RuntimeException("Please implement this method!");\n }\n\n String name();\n}\n\nThe code for the convolution should go to src/main/java/mt/LinearImageFilter.java\nOk. Now the convolution. The class has already a method that we will need later. It uses your sum method.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\npublic class LinearImageFilter extends Image implements ImageFilter {\n\n public void normalize() {\n\tdouble sum = sum();\n\tfor (int i = 0; i < buffer.length; i++) {\n\t buffer[i] /= sum;\n\t}\n }\n}\n\nCreate a constructor for it. Recall how we implemented LinearFilter!\nminIndexX and minIndexY need to be set to $-\\lfloor L_x/2 \\rfloor$ and $-\\lfloor L_y/2 \\rfloor$ when $L_x$ is the\nfilter's width and $L_y$ the filter's height.\n public LinearImageFilter(int width, int height, String name)\n\nConvolution in 2-d works similar to convolution in 1-d.\n$$K_x = \\lfloor L_x/2 \\rfloor$$\n$$K_y = \\lfloor L_y/2 \\rfloor$$\n$$g[x,y] = \\sum_{y'=-K_y}^{+K_y} \\sum_{x'=-K_x}^{+K_x} f[x-x', y-y'] \\cdot h[ x', y' ] $$\n$$g[x,y] = \\sum_{y'=\\text{h.minIndexY}}^{\\text{h.maxIndexY}} \\sum_{x'=\\text{h.minIndexX}}^{\\text{h.maxIndexX}} f[x-x', y-y'] \\cdot h[ x', y' ] $$\nRemember to use atIndex and setAtIndex to get and set the values.\nImplement the convolution in the method apply.\nThe result image was already created by our interface ImageFilter.\n public void apply(Image image, Image result)\n\n\n\nSource: https://github.com/vdumoulin/conv_arithmetic\nNow it's time to test!\nUse the file src/test/java/mt/LinearImageFilterTests.java.\nGauss Filter\n2 Points\nThe code for the Gauss filter should go to src/main/java/mt/GaussFilter2d.java.\nThe Gauss filter is a LinearImageFilter with special coefficients (the filter has the same height and width).\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\npublic class GaussFilter2d extends LinearImageFilter {\n \n}\n\nIt has the following constructor\n public GaussFilter2d(int filterSize, float sigma)\n\nIn the constructor, set the coefficients according to the unormalized 2-d normal distribution with standard deviation $\\sigma$ (sigma).\nMath.exp is the exponetial function. Use setAtIndex: $x$ should run from minIndexX to maxIndexX and $y$ from minIndexY to maxIndexY.\n$$ h[x,y] = \\mathrm{e}^{-\\frac{x^2+y^2}{2 \\sigma^2}}$$\nCall normalize() at the end of the constructor to ensure that all coefficients sum up to one.\nTest your Gauss filter in Exercise03.java.\nUse arbitray values for sigma and filterSize.\nThe Gauss filter will blur your input image clearly if you chose a large value for sigma.\n\nThere is also a unit test file that you can use: src/test/java/mt/GaussFilter2dTests.java\nCalculating with Images\n1 Points\nThe code for this section should go to src/main/java/mt/Image.java.\nImplement the method Image.minus in Image.java that subtracts the current image element-wise with another one and returns the result:\n public Image minus(Image other)\n\nWe use this method to calculate error images.\nYou can implement this with only one loop over the elements of the buffers of the two images.\nDemo\nThis is not required for the exercise!\nPlace the file src/main/java/exercises/Exercise03Demo.java\nin your project folder and run it.\n\nYou should see an interactive demo applying your Gauss filter to a noisy image.\nYou change change the used parameters.\nSubmitting\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nThen, compress your source code folder src to a zip archive (src.zip) and submit it on studOn.\n\n\n\n\n\n"
+},
+
+{
+"title": "Exercise 2",
+"url": "https://mt2-erlangen.github.io/archive/2020/exercise-2/",
+"body": "\n\n\n\n\nSubmission deadline: 18.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nStatistical Measures\nIn this exercise, we want to have a look on how we can analyze signals using simple statistical measures.\nWe will use a freely available ECG data set with the goal to distinguish healthy from patients with heart rythm problems.\n\nYou can find the original data set here\nbut we recommend to use a post-processed version available on studOn.\nGradle Build System\nIn Medizintechnik II we use the build system Gradle.\nGradle is especially popular for Android projects since it's easy to add new software dependencies that will be automatically\ndownloaded.\nIn our case, the published data set is saved as Matlab *.mat files.\nTo read those files, an external dependency was already added to our build.gradle file.\n implementation 'us.hebi.matlab.mat:mfl-core:0.5.6'\n\ndoes the magic and automatically downloaded a *.mat file reader.\nIn case, you need to add external software to your own projects you can use this search engine.\nTasks\nLoading one of File of the Data Set\nLoad the file src/main/java/exercises/Exercise02.java (available here (Click the raw button)) into your existing project.\nIt alread contain some code for parsing the program parameters:\n public static void main(String[] args) throws IOException {\n\t(new ij.ImageJ()).exitWhenQuitting(true);\n\n\tSystem.out.println("Started with the following arguments:");\n\tfor (String arg : args) {\n\t System.out.println(arg);\n\t}\n\n\tif (args.length == 1) {\n\t File file = new File(args[0]);\n\t if (file.isFile()) {\n\t\t// Your code here:\n\n\n\t } else {\n\t\t System.err.println("Could not find " + file);\n\t }\n\n\t} else {\n\t System.out.println("Wrong argcount: " + args.length);\n\t System.exit(-1);\n\t}\n\nLaunch Exercise02 with the one of the files of the data set as an argument (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat)!\n\nHow to do that in Eclipse\nHow to do that in IntelliJ\n\nYour program should print now the file name you selected:\n\nRemember to never put file names directly in your code. Your program will then only work on your machine!\nLet's open this file!\nif (file.isFile()) {\n // A file should be opened \n us.hebi.matlab.mat.types.Matrix mat = Mat5.readFromFile(file).getMatrix(0);\n Signal heartSignal = new mt.Signal(mat.getNumElements(), "Heart Signal");\n for (int i = 0; i < heartSignal.size(); ++i) {\n\t heartSignal.buffer()[i] = mat.getFloat(i);\n }\n heartSignal.show();\n\n\n} else if (file.isDirectory()) {\n\nYou should now see the signal. However, this plot does not have any labels with physical units attached.\nWe will change that later.\n\nExtension of Signal.java\n4 Points\nTo analyze this and other signals, we will extend our Signal class.\nPlease implement the following methods in Signal.java that calculate some descriptive properties of the signal:\n public float min() //< lowest signal value\n public float max() //< largest signal value\n public float sum() //< sum of all signal values\n public float mean() //< mean value of the signal\n public float variance() //< variance of the signal\n public float stddev() //< standard deviation of the signal\n\nTest the methods in your main function and check whether the calculated values seem plausible\nby looking at your plot and printing the calculated values.\nPhysical Dimensions\n1 Points\nThe code for this section belong to Signal.java\nIn the last exercise, we treated signals as pure sequence of numbers without any physical dimensions.\nBut for medical measurements physical dimensions are important.\nWe want to extend our plot to look like this with the horizontal axis labeled with seconds:\n\nTo do this we will add a new member to our signal that's describing the physical distance between two samples\n protected float spacing = 1.0f; //< Use 1.0f as a default when we don't set the physical distance between points\n\nAdd also a setter and getter method\n public void setSpacing(float spacing) \n public float spacing() \n\nRead in the discription of the data set the sampling frequency of the signal\nand use it to calculate the spacing between two samples. Set this property setSpacing in the main method.\nNext, we want to change show() to regard our spacing and to accept a ij.gui.Plot so that we can set the axis of our plot.\n public void show(Plot plot) {\n\t DisplayUtils.showArray(buffer, plot, /*start of the signal=*/0.f, spacing);\n }\n\nBecause we are lazy, we can still keep the original usage of show()\n public void show() {\n\t DisplayUtils.showArray(buffer, name, , /*start of the signal=*/0.f, spacing);\n }\n\nPlease create an instance of ij.gui.Plot in the main method of Exercise02 with descriptive labels for both axis and use if for heartSignal.show(...).\n\n// Constructs a new Plot with the default options.\nPlot plot = new Plot("chosee title here", "choose xLabel here", "choose yLabel here")\nheartSignal.show(plot);\n\n//... add here more plotting stuff\n\nplot.show()\n\nDetermine the Heart Frequency\n5 Points\nThe remainder of this exercise will be implemented in Exercise02.java\nCreate a file src/main/java/lme/HeartSignalPeaks.java with following content\npackage lme;\n\nimport java.util.ArrayList;\n\npublic class HeartSignalPeaks {\n\tpublic ArrayList<Double> xValues = new ArrayList<Double>();\n\tpublic ArrayList<Double> yValues = new ArrayList<Double>();\n}\n\nArrayList behave like arrays, except you can add new items to make it longer. You can read more about them here.\nWe now want to find the peaks of the heart signal. We do that by finding local maxima within region that are above a certain\nthreshold (here in blue).\nFind a good value of this threshold so that all peaks are above this value.\nYou may use mean(), max(), min() to calculate it.\nYou can see your threshold by ploting it:\n plot.setColor("blue");\n plot.add("lines", new double[] { 0, /* a high value */10000 }, new double[] { threshold, threshold });\n\n\nImplement the following method that finds all peaks of the signal.\n public static lme.HeartSignalPeaks getPeakPositions(mt.Signal signal, float threshold)\n\nTo determine the signal peaks, one can use normal maximum search over the signal values.\nSave the found maximum value (i.e. signal amplitude) in x(max) and\nthe location of maximum (i.e. the time at which the peak occurs) in y(arg max).\nYou can implement the peak finding method as follows:\n\n\nLoop over the signal and at each index\n\n\nUse boolean variable to determine if the current signal value is above the threshold.\n\n\nIf the previous signal value was above the threshold (i.e boolean value was true), and the current value is below threshold (i.e boolean value is false)\n\n\nAdd the previous signal value as a instance of HeartSignalPeaks (like peaks.xValues and peaks.yValues)\n\n\nThis is a suggested workflow, but feel free to use your own ideas to efficently find the peaks of the signal.\nYou can plot the peaks you have found:\n plot.setColor("red");\n plot.addPoints(peaks.xValues, peaks.yValues, 0);\n\nNext, create a Signal with the difference in time between succesive peaks (import import java.util.ArrayList;). \n\tpublic static mt.Signal calcPeakIntervals(lme.HeartSignalPeaks peaks) {\n\t\tArrayList<Double> peakPositions = peaks.xValues;\n\t\tif (peakPositions.size() > 1) {\n\t\t\tSignal intervals = new mt.Signal(peaks.xValues.size() - 1, "Peak Intervals");\n\n\t\t\tfor (int i = 0; i < peakPositions.size() - 1; ++i) {\n\t\t\t\tintervals.buffer()[i] = (float) (peakPositions.get(i + 1) - peakPositions.get(i));\n\t\t\t}\n\t\t\treturn intervals;\n\t\t} else {\n\t\t\treturn new mt.Signal(1, "No Intervals found");\n\t\t}\n\t}\n\nYou can use that signal to determine the mean cycle duration (peakIntervals.mean()), the mean heart frequency ((1. / intervals.mean())) and\nbeats per minute (60. * 1. / intervals.mean()). Print those values!\nSummary of tasks\nTo summarize the list of tasks that needs to be implemented to complete this exercise\n\nSet the file path correctly to load the signal into your program (Ensures you can load the signal inside the program)\nAdd labels to the plot, include spacing variable in signal class for visualizing plots in physical dimensions.\nImplement methods to compute statistical measures (like mean, median,...). (Use the formula provied in lecture/exercise slides)\nDetermine the threshold (follow the description provided here)\nFind the peaks (follow the description provided here)\nCalculate intervals between the peaks\n\nNote\nWhile setting file path as arguments, add "path" if there are spaces in file name since java parses space as new arguments.\nBonus\nThis is not required for the exercise.\nRun Exercise02 with other files of the data set as an argument.\nWhat is the meaning of the mean value and the variance of time distance between the peeks?\nHow do signals with low variance in the peak distances look like and how signals with high variance?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+},
+
+{
+"title": "Exercise 1",
+"url": "https://mt2-erlangen.github.io/archive/2020/exercise-1/",
+"body": "Signals and Convolution\nSubmission deadline: 11.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImageJ\nThe image processing program we want to use during this semester is called ImageJ.\nIt was developed at the US National Institutes of Health and is used nowadays especially in research \nfor medical and biological images.\nIf you want to, you can download a stand-alone version of the program here.\nGetting started\nImageJ can also be used as a Java library.\nWe already created a Java project that uses ImageJ.\nYou can download it from https://github.com/mt2-erlangen/exercises-ss2021 and import with the IDE of your choice:\n\nInstructions for Eclipse\nInstructions for IntelliJ\n\nTasks\n\n\nYou should now be able to execute the file src/main/java/exercises/Exercise01.java\n\n\nThe following code is opening the ImageJ main window and exits the running program when the window is closed.\npublic class Exercise01 {\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n }\n}\n\nIntelliJ will only allow to run Exercise01 when there are no errors in the project. You can just out-comment the method lme.Algorithms.convolution1d until you implemented your Signal class.\nSignal.java\n4 Points\nAs a first step, we will implement the class Signal \nwhich should hold a signal of finite length.\nCreate the file src/main/java/mt/Signal.java.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\nimport lme.DisplayUtils;\nimport ij.gui.Plot;\n\npublic class Signal {\n\n}\n\nSignal should have the following members\n protected float[] buffer; // Array to store signal values\n protected String name; // Name of the signal\n protected int minIndex; // Index of first array element (should be 0 for signals)\n\nImplement two constructors for Signal\n public Signal(int length, String name) // Create signal with a certain length (set values later)\n public Signal(float[] buffer, String name) // Create a signal from a provided array\n\nImplement the following getter methods for Signal\n public int size() // Size of the signal\n public float[] buffer() // Get the internal array \n public int minIndex() // Get lowest index of signal (that is stored in buffer)\n public int maxIndex() // Get highest index of signal (that is stored in buffer)\n public String name() // Get the name of the signal\n\nNext, we want to visualize our Signal in the method show. You can use provided function lme.DisplayUtils.showArray.\nTo test it, create a Signal with arbitray values in the main method of Exercise01 and call its show method.\n public void show() {\n DisplayUtils.showArray(this.buffer, this.name, /*start index=*/0, /*distance between values=*/1);\n }\n\nIn our black board exercises, we agreed that we want to continue our signals with zeros where we don't have any values stored.\nIf we access indices of our Signal with values smaller than minIndex() or larger maxIndex() we want to return 0.0f.\nIf a user accesses an index between minIndex() and maxIndex() we want to return the corresponding value stored in our array.\n\nImplement the method atIndex and setAtIndex. Please be aware that minIndex can be smaller than 0 for subclasses of Signal.\nIf setAtIndex is called with an invalid index (smaller than minIndex or greater than maxIndex), it's ok for the program to crash.\nThis should not happen for atIndex.\n public float atIndex(int i)\n public void setAtIndex(int i, float value)\n\nYou can check the correctness of atIndex/setAtIndex with the test testAtIndex in file src/test/java/SignalTests.java.\nLinearFilter.java\n3 Points\nImplement LinearFilter in file src/main/java/LinearFilter.java as a subclass of Signal.\nLinearFilter should work like Signal except its minIndex should be at - floor(coefficients.length/2) as in the exercise slides.\n\nLinearFilter should have a constructor that checks that coefficients is an array of odd size or throws an error otherwise (any error is ok).\n public LinearFilter(float[] coefficients, String name)\n\nand a method that executes the discrete convolution on another Signal input and returns an output of same size.\n public Signal apply(Signal input);\n\nYou should be able to directly use the formula from the exercise slides (f is the input signal, h our filter, $L$ the filter length)\n$$K = \\lfloor L/2 \\rfloor$$\n$$g[k] = \\sum_{\\kappa=-K}^{K} f[k-\\kappa] \\cdot h[ \\kappa ]$$\nor with our minIndex/maxIndex methods for each index $k$ of the output signal.\n$$g[k] = \\sum_{\\kappa=h.\\text{minIndex}}^{h.\\text{maxIndex}} f[k-\\kappa] \\cdot h[\\kappa] $$\nBe sure that you use atIndex to access the values of input and the filter.\n\nYou can test your convolution function with the tests provided in src/test/java/LinearFilterTests.java.\nGood test cases are:\n\n{0,0,1,0,0}: this filter should not change your signal at all\n{0,1,0,0,0}: this filter should move your signal one value to the left\n{0,0,0,1,0}: this filter should move your signal one value to the right\n\nQuestions\n3 Points\nIn this task we want to convolve a test Signal with three different linear filters.\nFilter the signal $f[k]$ Signal(new float[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, "f(k)")\nwith filters\n\n$h_1[k]$: {1.0f/3 ,1/3.f ,1/3.f},\n$h_2[k]$: {1/5.f, 1/5.f , 1/5.f, 1/5.f, 1/5.f},\n$h_3[k]$: {0.5f, 0, -0.5f}.\n\nSave the images of the input signal and filtered results (recommended filetype: png).\nCreate a PDF document (e.g. with Word or LibreOffice) with those images in which you describe briefly how the filters modified the input signal and why.\nSubmitting\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nThen, compress your source code folder src to a zip archive (src.zip) and submit it and your PDF document via StudOn!\n"
+}
+]
diff --git a/kneescan.png b/kneescan.png
new file mode 100644
index 00000000..305ffc49
Binary files /dev/null and b/kneescan.png differ
diff --git a/make_binary.png b/make_binary.png
new file mode 100644
index 00000000..124d8801
Binary files /dev/null and b/make_binary.png differ
diff --git a/mip_coordinates.png b/mip_coordinates.png
new file mode 100644
index 00000000..56251cba
Binary files /dev/null and b/mip_coordinates.png differ
diff --git a/mip_z.png b/mip_z.png
new file mode 100644
index 00000000..3f2524dc
Binary files /dev/null and b/mip_z.png differ
diff --git a/one_color.png b/one_color.png
new file mode 100644
index 00000000..ba37443d
Binary files /dev/null and b/one_color.png differ
diff --git a/otsu/index.html b/otsu/index.html
new file mode 100644
index 00000000..6b92423d
--- /dev/null
+++ b/otsu/index.html
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Project Work 3 - Otsu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Otsu's method is a commonly used algorithm to compute the ideal threshold-value for image-segmentation. It is used in cases where the image-histogram is bimodal (meaning it contains two distinct peaks) to find the ideal "middle ground".
+
We highly recommmend that you have a look at the original publication from 1975 regarding the algorithm (Access should be granted if you try to access it using the university internet).
+
+
3.1: Theory
+
Otsu's method works by maximizing the between class variance σB² which is defined as:
+
+σB2 (θ) = P1(θ) · P2(θ) · (μ1(θ) - μ2(θ))2
+
with
+
P1(θ) = $\sum_{i = 0}^{\theta} h(i)$ (≙ number of pixels below the threshold (background))
+
P2(θ) = 1 - P1(θ) = $\sum_{i = \theta +1}^{L-1} h(i)$ (≙ number of pixels above the threshold (foreground))
+
μ1(θ) = $\frac{1}{P1(\theta)}$ $\cdot$ $\sum_{i = 0}^{\theta} (i+1)h(i)$ (≙ mean intensity of the background)
+
μ2(θ) = $\frac{1}{P2(\theta)}$ $\cdot$ $\sum_{i = \theta +1}^{L-1} (i+1)h(i)$ (≙ mean intensity of the foreground)
+
+
with h(i) being the normalized histogram of the image, θ being the current threshold and L being the length of the histogram-array.
+
+
3.2: Coding
+
In order to implement this algorithm, you will need to:
+
+
Generate the histogram of the image
+
Use the histogram to determine P1(θ) and P2(θ) for all possible θ's
+
Use these values to calculate μ1(θ) and μ2(θ) for all possible θ's
+
Calculate σB² (θ) for all possible θ's
+
+
Moving foreward, these steps will be explained in further detail.
+Since your code for this task can get rather long, you should pay attention to an orderly programming style to avoid difficulties while debugging later on. You can also add comments to your code to help you keep track of your work.
+
To do:
+
+
Open the Task_3_Otsu-class and take note of the empty methods provided. Each of these methods will be performing one of the calculations detailed above.
+
+
+
+
+
Complete the method:
+
public double[] getHistogram(ImageProcessor in) {}
+
+
a. Create a double-array of appropriate size to store the histogram-values
+
b. Iterate through the input-image and update the corresponding histogram-entry for each pixel's value
+
c. Normalize and return the histogram.
+
+
+
+ 📝 Note:
+ Normalizing refers to converting the histogram to a probability distribution. If you are unsure how to do that, have a look at the original publication
+
+
+
+
+
Complete the methods to compute P1(θ), P2(θ), μ1(θ) and μ2(θ):
Consider which values for θ are possible in an 8-bit grayscale image
+
+
+
Iterate through the possible values of θ and calculate P1(θ) and P2(θ) for each instance
+
+
+
+
μ1(θ) and μ2(θ):
+
+
Calculate the values for μ1(θ) and μ2(θ) according to the formulas provided above.
+
+
+📝 Note:
+
Pay attention to the possibility of dividing by zero.
+You can handle this, by checking beforehand, if you will be dividing by zero and simply dividing by a very small number instead. We recommend you use 10e-10
+a. Create a new double-array of suitable length
+b. Calculate σB² (θ) for each value of θ and store it in the array you just created
+c. Return the array of sigmas
+
+
+
+
+
Find the maximum of your sigmas-array using:
+
public int getMaximum(double[] sigmas){}
+
+
Determine the index (within the array of possible σ's) of the maximum value for σB² (θ) and store the index as an int-variable
+(In case there is no definite maximum, you can simply select the σ with the highest index, as this adds the least amount of extra programming)
+
The maximum value this method returns is your Otsu-Threshold-Value
+
+
+
+
+
+
Complete the method:
+
public ByteProcessor otsuSegmentation(ImageProcessor ip) {}
+
+
This method will combine all the steps for calculating the Otsu-Threshold, as well as return the Image after having applied the Otsu-Threshold and print the determined value to the terminal.
+
+
a. First apply an illumnation-correction to the input image. To do this, inherit the methods you implemented in Task_1 by using:
+
Task_1_Threshold Threshold = new Task_1_Threshold();
+
+
You can call methods belonging to the Threshold-Object like this: Threshold.correctIllumination().
+
b. Use the "illumination-corrected" image to perform all of the calculations you implemented
+
c. Apply a Thresholding-operation to your image using the determined Otsu-Threshold and store the result in a ByteProcessor.
+
d. Print the Otsu-Threshold to the terminal and return the result-ByteProcessor
+
+
+
+
Complete the run-method such that it applies the Otsu-Segmentation-Process to the Input-Image and displays the resulting image.
+
+
+
To check your code you can perform an Otsu-Segmentation of the "Cells"-image.
+Your plugin should return the following:
+
+
+
3.3: Project-Report
+
The part of your report concerning Task_3 should contain the following:
+
+
A brief explanation of what Otsu's method is
+
What it aims to achieve and how
+
Its limitations
+
Example of your segmentation
+
In the original publication, Otsu mentions that "An optimal threshold is selected automatically and stably, not based on the differentiation (i.e. a local property such as valley), but on the integration (i.e., a global
+property) of the histogram." Explain what this means, especially where the integration comes from.
+
Compare the results to the naive thresholding method
+
Otsu's method, while still applied and useful in practice, has several shortcomings. Discuss two of them and name examples of current methods that can be applied to similar problems that solve these issues, by providing a citation and briefly explaining them.
You have just created a symbolic link on your desktop that points to a directory where you have a soft quota of 8GB. Download the project from Github and extract it into Desktop/tmp/mt2
+
+
+
Open Intelij
+
+
+
In the menu bar click on File -> open -> Desktop/tmp/mt2/project_ss2024
+
+
+
Build project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/quota/quota_issues.png b/quota/quota_issues.png
new file mode 100644
index 00000000..b03948b1
Binary files /dev/null and b/quota/quota_issues.png differ
diff --git a/radMask.png b/radMask.png
new file mode 100644
index 00000000..d81a1d4f
Binary files /dev/null and b/radMask.png differ
diff --git a/rad_kspace.gif b/rad_kspace.gif
new file mode 100644
index 00000000..edea541a
Binary files /dev/null and b/rad_kspace.gif differ
diff --git a/rectMask.png b/rectMask.png
new file mode 100644
index 00000000..436be9f3
Binary files /dev/null and b/rectMask.png differ
diff --git a/rect_kspace.gif b/rect_kspace.gif
new file mode 100644
index 00000000..9fa13131
Binary files /dev/null and b/rect_kspace.gif differ
diff --git a/rki_data_diff.png b/rki_data_diff.png
new file mode 100644
index 00000000..4db9e84b
Binary files /dev/null and b/rki_data_diff.png differ
diff --git a/rki_data_mean.png b/rki_data_mean.png
new file mode 100644
index 00000000..9c8df5c1
Binary files /dev/null and b/rki_data_mean.png differ
diff --git a/rki_data_raw.png b/rki_data_raw.png
new file mode 100644
index 00000000..12233df2
Binary files /dev/null and b/rki_data_raw.png differ
diff --git a/robots.txt b/robots.txt
new file mode 100644
index 00000000..ddcae604
--- /dev/null
+++ b/robots.txt
@@ -0,0 +1,4 @@
+User-agent: *
+Disallow:
+Allow: /
+Sitemap: https://mt2-erlangen.github.io/sitemap.xml
diff --git a/run_intellij.png b/run_intellij.png
new file mode 100644
index 00000000..450671be
Binary files /dev/null and b/run_intellij.png differ
diff --git a/scharr.png b/scharr.png
new file mode 100644
index 00000000..751cd749
Binary files /dev/null and b/scharr.png differ
diff --git a/search_index.en.js b/search_index.en.js
new file mode 100644
index 00000000..cb6809b8
--- /dev/null
+++ b/search_index.en.js
@@ -0,0 +1 @@
+window.searchIndex = {"fields":["title","body"],"pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5","index":{"body":{"root":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":17,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":8}}}}},",":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":5,")":{"docs":{},"df":0,"$":{"docs":{},"df":0,",":{"docs":{},"df":0,"$":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{},"df":0,",":{"docs":{},"df":0,"0":{"docs":{},"df":0,")":{"docs":{},"df":0,",":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{},"df":0,",":{"docs":{},"df":0,"1":{"docs":{},"df":0,")":{"docs":{},"df":0,",":{"docs":{},"df":0,"(":{"docs":{},"df":0,"0":{"docs":{},"df":0,",":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"df":0,"0":{"docs":{},"df":0,",":{"docs":{},"df":0,"1":{"docs":{},"df":0,",":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}},"1":{"docs":{},"df":0,",":{"docs":{},"df":0,"0":{"docs":{},"df":0,",":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":5,",":{"docs":{},"df":0,"0":{"docs":{},"df":0,",":{"docs":{},"df":0,"0":{"docs":{},"df":0,",":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}},"4":{"docs":{},"df":0,"5":{"docs":{},"df":0,",":{"docs":{},"df":0,"9":{"docs":{},"df":0,"0":{"docs":{},"df":0,",":{"docs":{},"df":0,"1":{"docs":{},"df":0,"3":{"docs":{},"df":0,"5":{"docs":{},"df":0,",":{"docs":{},"df":0,"1":{"docs":{},"df":0,"8":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},".":{"docs":{},"df":0,"0":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772}},"df":1},"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":5}},"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1},"2":{"docs":{},"df":0,"8":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"9":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"3":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.449489742783178}},"df":1,"0":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}},"4":{"docs":{},"df":0,",":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2,".":{"docs":{},"df":0,"4":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}},"5":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772}},"df":3,",":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"5":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3}}}},"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951}},"df":4}}},"/":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}},"0":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":2},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0}},"df":4,".":{"docs":{},"df":0,"0":{"docs":{},"df":0,"6":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}},"8":{"docs":{},"df":0,".":{"docs":{},"df":0,"0":{"docs":{},"df":0,"6":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}},"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}},"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":3.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":22,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772}},"df":1}}}},",":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5}},".":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":3,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2,"/":{"docs":{},"df":0,"3":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}},"1":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1},"3":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1},"4":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1},"5":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3},"8":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":4},"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":6}},"/":{"docs":{},"df":0,"3":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951}},"df":2}}},"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.23606797749979}},"df":2}}}},"0":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":14,".":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}},"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}},"0":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}},"\\":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}},"e":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1},"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"9":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":7,".":{"docs":{},"df":0,"0":{"docs":{},"df":0,"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}},"3":{"docs":{},"df":0,"5":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1}},"4":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":6,".":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0}},"df":4}}},"5":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":3},"6":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":2,"2":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}},"\\":{"docs":{},"df":0,"4":{"docs":{},"df":0,"7":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"7":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":1},"8":{"docs":{},"df":0,".":{"docs":{},"df":0,"0":{"docs":{},"df":0,"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"9":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"0":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1}},"9":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0}},"df":4}}},"7":{"docs":{},"df":0,"5":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1},"9":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}},"9":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}},"\\":{"docs":{},"df":0,"1":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"2":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"{":{"docs":{},"df":0,"b":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.0}},"df":1}}}}}}}}}}}},"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":3},"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"j":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"}":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"+":{"docs":{},"df":0,"1":{"docs":{},"df":0,")":{"docs":{},"df":0,"h":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}},"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":1}}},"h":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}},"2":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":19,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}},"(":{"docs":{},"df":0,"θ":{"docs":{},"df":0,")":{"docs":{},"df":0,")":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}},"+":{"docs":{},"df":0,"g":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}},".":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2},"1":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1},"3":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}},"0":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0}},"df":2},"1":{"docs":{"https://mt2-erlangen.github.io/archive/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0}},"df":1}}}}}}},"\\":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}},"3":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":1,":":{"docs":{},"df":0,"5":{"docs":{},"df":0,"5":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":8}},"9":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":6}}}}},"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"0":{"docs":{},"df":0,"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}},"5":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":4}},"6":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}},"9":{"docs":{},"df":0,".":{"docs":{},"df":0,"0":{"docs":{},"df":0,"6":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}},"\\":{"docs":{},"df":0,"1":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}},"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":7}},"3":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":18,".":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1},"3":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}},"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":10},"6":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0}},"df":1}},"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":2},"x":{"docs":{},"df":0,"3":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":3}}},"4":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":14,".":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1},"3":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1},"4":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}},"5":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1},"7":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}},"\\":{"docs":{},"df":0,"1":{"docs":{},"df":0,"6":{"docs":{},"df":0,"2":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"{":{"docs":{},"df":0,"b":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}}}},"5":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":11,".":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1},"3":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1},"4":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1},"5":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}},"0":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}},"6":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":8,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":10}},"7":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3,",":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,",":{"docs":{},"df":0,"9":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}},"5":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"6":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}},"8":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":6,"g":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1}}},"9":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":3,"0":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0}},"df":1}},"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{},"df":0,"=":{"docs":{},"df":0,"0":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}},"a":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}},"b":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}},"o":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":15}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":4}},"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":10}}},"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":6,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":2}}}}}}}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":15}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":3},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":2}}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":6}}}}},"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":9,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":17,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":4,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":4}}}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":4,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":3}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":2},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951}},"df":4}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2}}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":2}}}}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":8}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":8}},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"g":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772}},"df":12}}}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":10}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":15,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0}},"df":7}}},"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":15}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":10}}}},"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":5}}}},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1,";":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}},"z":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}},"d":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979}},"df":3,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":2}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":8}}},"s":{"docs":{},"df":0,"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4}}}},"y":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":3}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}},"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}},"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":23,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":8}},"y":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":6}}}},"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.7320508075688772}},"df":8}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":2}}},"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":3,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951}},"df":6}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}}}}}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":10}}}},"e":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}},"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":12,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}}}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.7320508075688772}},"df":12}}}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":3}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.6457513110645907}},"df":16,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"&":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,";":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.23606797749979}},"df":2}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}},"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":3}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772}},"df":1}}},"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":7,"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1,"(":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":6,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}}}},"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}}}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":1},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772}},"df":1}}}}},"u":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":2}}}},"t":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":1,"m":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":5}}},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":5}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4,"[":{"docs":{},"df":0,"0":{"docs":{},"df":0,"]":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"_":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"'":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}},"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}},"1":{"docs":{},"df":0,"]":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"_":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"'":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}},"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},"df":0,"]":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"_":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"'":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":9}}},"b":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.8284271247461903}},"df":9,"2":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1},"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":11,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":9}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.8284271247461903}},"df":4,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951}},"df":1,"(":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}},"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951}},"df":2,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772}},"df":1}}}}}}}}}}}}}}}}}},"r":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3},"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":5}}}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772}},"df":3,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":9,"e":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3,"{":{"docs":{},"df":0,"b":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{},"df":0,"}":{"docs":{},"df":0,"1":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":1}}}}},"1":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"1":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"1":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}},"4":{"docs":{},"df":0,"7":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}},"1":{"docs":{},"df":0,"6":{"docs":{},"df":0,"2":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"4":{"docs":{},"df":0,"7":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":5}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":16}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":5}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":17}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3,"b":{"docs":{},"df":0,"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"y":{"docs":{},"df":0,".":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":3}}}}}}}}}},"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":2},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.8284271247461903}},"df":2,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0}},"df":5}}}}}},"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951}},"df":2}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":6}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":4,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0}},"df":5,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":6}}}}},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"d":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"o":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":5}}}}},"r":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12},"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":3}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":2}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":1}}}}}}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":6,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":6}}}},"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":5}}},"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178}},"df":4,".":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}}}}},"[":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}}}},"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":4},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":9,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.7320508075688772}},"df":3}}}}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951}},"df":3}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":4}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":5}}}}},"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.23606797749979}},"df":3}}}}}}}}}}}}},"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772}},"df":6,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"c":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"l":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.0}},"df":17}}},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":20}},"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":5}}},"n":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7},"y":{"docs":{},"df":0,"'":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":3}}},"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":13}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}},"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2},"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":9}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7,"s":{"docs":{},"df":0,"_":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":3,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":4}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,",":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,",":{"docs":{},"df":0,"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":4}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}},"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0}},"df":11}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.7320508075688772}},"df":21,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":6}}}}}}},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"o":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":5}}}},"i":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":1},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0}},"df":3},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":6}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":5}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":34,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":5,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":6}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.7320508075688772}},"df":5,"e":{"docs":{},"df":0,":":{"docs":{},"df":0,"1":{"docs":{},"df":0,".":{"docs":{},"df":0,"4":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/quota/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0}},"df":12}},"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":3,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.23606797749979}},"df":22}},"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772}},"df":4}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":9},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":5}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":3}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":10,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772}},"df":3}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":4}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0}},"df":3}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.449489742783178}},"df":4}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":5}}}},"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":15}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":5}}},"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":2},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":13}}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6}}},"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":1}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772}},"df":6}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":3,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":10,":":{"docs":{},"df":0,"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":25}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":12}},"x":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":3,"u":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":3}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":4}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":7}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772}},"df":7}},"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":14}}}}},"p":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":4}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,":":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"6":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":5}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.449489742783178}},"df":11,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":1}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":5}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":10}}}}}}}},"s":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0}},"df":5}}}}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":3}},"r":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":3}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/quota/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.449489742783178}},"df":32}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":4}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":3}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":10,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"+":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2},"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"+":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2},"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}}}}}}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}},"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":13}}}},"v":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":11,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951}},"df":13}}}},"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3,"g":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":5}}}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":2}}},"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772}},"df":2,"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"y":{"docs":{},"df":0,"$":{"docs":{},"df":0,"o":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}},"m":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":10}}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.449489742783178}},"df":3,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"(":{"docs":{},"df":0,"z":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.6457513110645907}},"df":3}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":14},"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11}}}}},"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"k":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.4142135623730951}},"df":1,"/":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"_":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"4":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":11}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":2}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.23606797749979}},"df":7}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":8}}}},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}},"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":2}}}},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":3}}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.0}},"df":2,"u":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"_":{"docs":{},"df":0,"x":{"docs":{},"df":0,"_":{"docs":{},"df":0,"x":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772}},"df":2}}}}},"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":24,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2}}}}}}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":9,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}}}}},"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":4.58257569495584},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":9,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":13}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951}},"df":3}}}}}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":7}},"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":9,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"/":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{},"df":0,"(":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0}},"df":6}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7},"s":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":1}}}},"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0}},"df":2,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":2}}}},"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0}},"df":15}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.23606797749979}},"df":8}}},"w":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":4,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":18}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951}},"df":1},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":3,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4}}},"o":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}}}},"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"=":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":3},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":7}}}},"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":2,".":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":15},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.7320508075688772}},"df":30}},"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"c":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.4142135623730951}},"df":14}},"s":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":1}}}}},"d":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":11},"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":1}}}},"u":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":2}}}}}}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951}},"df":5}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":4}}},"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":2}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}}}},"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":3},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}},"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":10}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":8}},"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":6}}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":2},"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":12}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"/":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"_":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":15}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":6}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772}},"df":3}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"c":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":4}}}}}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":13,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":1}}}}}}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":2.0}},"df":1}}}}}}}}}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":5,"t":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":4}}}}}},"x":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}},"p":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/conclusion/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":15}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":9}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951}},"df":2}}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":24,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"0":{"docs":{},"df":0,"5":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}},"0":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":1},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":5},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772}},"df":2,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}},"3":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":4,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}},"4":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"6":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"0":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":7}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}},"p":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":3}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":4}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772}},"df":14}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":6,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2}}}}},"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":9},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}},"r":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1}}}}}}},"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2,"(":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"r":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772}},"df":2,")":{"docs":{},"df":0,",":{"docs":{},"df":0,"f":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,"_":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5,"_":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5}}}}}}},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}}},"[":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772}},"df":2},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951}},"df":3},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":2,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":4}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":3}},"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":4}},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":2}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}},"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"=":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/introduction/":{"tf":3.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7}}},"j":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.4142135623730951}},"df":3}},"l":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/quota/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.4142135623730951}},"df":25,"(":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,"[":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}},".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}},"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}}}},"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":7},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":14,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.449489742783178}},"df":4},"x":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":9}},"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":3.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":19},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":2}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":19}}},"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":2},"v":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":19,")":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,"*":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,")":{"docs":{},"df":0,"/":{"docs":{},"df":0,"1":{"docs":{},"df":0,"0":{"docs":{},"df":0,"0":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}},"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,")":{"docs":{},"df":0,"/":{"docs":{},"df":0,"1":{"docs":{},"df":0,"0":{"docs":{},"df":0,"0":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}},"[":{"docs":{},"df":0,"]":{"docs":{},"df":0,"{":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":4}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":3}}}}}}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"n":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1,"\"":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":2,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":18}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":34}}}},"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}},"r":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":1}}}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0}},"df":5}}},"m":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4}},"u":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":17}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":2}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951}},"df":6}},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":3.0}},"df":1}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1,"\"":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2},"p":{"docs":{},"df":0,"1":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}},"2":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}},"_":{"docs":{},"df":0,"1":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{},"df":0,"=":{"docs":{},"df":0,"0":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{},"df":0,"=":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"+":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}},"\\":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5,"_":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5}}}}},"x":{"docs":{},"df":0,"'":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}},"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,"+":{"docs":{},"df":0,"y":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}},"y":{"docs":{},"df":0,"'":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":2}}}}}}},"e":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":10,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772}},"df":3}}}}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951}},"df":2}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":20,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}}}}}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}}}}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951}},"df":5}}}},"x":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0}},"df":2},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772}},"df":2}}}},"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":2,"[":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951}},"df":2},"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}},"a":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.8284271247461903}},"df":4,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"2":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":4,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2}}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}}}}}},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":8,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1,",":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"(":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}},"u":{"docs":{},"df":0,"1":{"docs":{},"df":0,"(":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}},"2":{"docs":{},"df":0,"(":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}},"p":{"docs":{},"df":0,"1":{"docs":{},"df":0,"(":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}},"2":{"docs":{},"df":0,"(":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":7,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":2}}}},"v":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":10,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":9}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2},"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":14,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":6}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":14}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3},"d":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/cannyedge/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.449489742783178}},"df":4}}}},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":8,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}}}}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772}},"df":1}},"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":2,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}},"e":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"y":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951}},"df":2}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0}},"df":4}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/quota/":{"tf":1.4142135623730951}},"df":18},"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":5}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"d":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":3,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772}},"df":1}}}}}}},"x":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1},"y":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}},"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":4,"(":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772}},"df":2}},"[":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"k":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}},"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}},"_":{"docs":{},"df":0,"1":{"docs":{},"df":0,"[":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"2":{"docs":{},"df":0,"[":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"3":{"docs":{},"df":0,"[":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}},"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":6}},"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":5,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}},"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":4}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}},"s":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951}},"df":1}}}}}},"x":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}},"w":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.23606797749979}},"df":2,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,"[":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2,"(":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.449489742783178}},"df":6}}}},"l":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":9,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":5}}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":21}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":5,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":5}}},"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":7}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":3.0},"https://mt2-erlangen.github.io/otsu/":{"tf":3.605551275463989}},"df":3,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":2}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":5}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":11}}}}}},"p":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":2,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"z":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":3}}}}}}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,":":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"/":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"/":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,":":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"h":{"docs":{},"df":0,"_":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"_":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"p":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{},"df":0,"p":{"docs":{},"df":0,"b":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"w":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"l":{"docs":{},"df":0,"7":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"v":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"_":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":4}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"df":0,"w":{"docs":{},"df":0,"w":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"/":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"p":{"docs":{},"df":0,"/":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"/":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"b":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"&":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}},"+":{"docs":{},"df":0,"1":{"docs":{},"df":0,")":{"docs":{},"df":0,"h":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":2}}}}}},",":{"docs":{},"df":0,"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.6457513110645907}},"df":2}},".":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":9},"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2},"n":{"docs":{},"df":0,"=":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}},"{":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1},"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}},"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":10,"e":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{},"df":0,"#":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":1}}}}}}}}}}}},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":2}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":2.0}},"df":1}}}}}},"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":10,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":11}}}}},"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2},"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":4,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":4}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"j":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"w":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"(":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":16}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":1}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}}}}}},"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"8":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.6457513110645907}},"df":2}},"n":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":5}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":5.916079783099616},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":7.280109889280518},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":4.69041575982343},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":5.916079783099616},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":7.280109889280518},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":4.69041575982343},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/cannyedge/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":4.69041575982343},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":4.69041575982343},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/otsu/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/segmentation/":{"tf":4.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":4.242640687119285}},"df":36,"_":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772}},"df":1},"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772}},"df":2}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}},".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}},"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":6}}}},"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.23606797749979}},"df":19},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":2.0}},"df":1,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":2}}}}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.7320508075688772}},"df":30}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":24}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":5}}}}},"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}},"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":1},"x":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":1}},"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":11}}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772}},"df":13,"=":{"docs":{},"df":0,"*":{"docs":{},"df":0,"/":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":11},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":3}}}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}},"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":2}}}}},"o":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1,"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0}},"df":13,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":9}}},"j":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}},"o":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":13,",":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}},".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":12,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":6}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":10}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951}},"df":3}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":19,"e":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":5,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":9}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"j":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1},"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_intellij/":{"tf":2.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.4142135623730951}},"df":12}}}},"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":8}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":5}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":8}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":8,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":5.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":5.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":4.123105625617661}},"df":5,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}}}}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":4}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}},"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.23606797749979}},"df":2,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,"[":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}},"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"x":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,")":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"{":{"docs":{},"df":0,"d":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"x":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":8,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.23606797749979}},"df":13}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,".":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772}},"df":2},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":2}}}}},"o":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":2},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4}}},"t":{"docs":{},"df":0,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":15},"e":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":4},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":11}}}},"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":18,".":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":4,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}}}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}},"d":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951}},"df":6}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"p":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.7320508075688772}},"df":1}}}},"k":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951}},"df":3,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":3},"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":3,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"+":{"docs":{},"df":0,"k":{"docs":{},"df":0,"_":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}},"y":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"+":{"docs":{},"df":0,"k":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}},"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772}},"df":2}}}},"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4}},"p":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1}},"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.6457513110645907}},"df":4}}}},"y":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":5}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979}},"df":6,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":3}}}},"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.23606797749979}},"df":1,"[":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"_":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}}}}},"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3,"/":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}},"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2,"/":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}},"y":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}},"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":5}}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":5,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951}},"df":8}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":6}},"x":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":2.0}},"df":1}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0}},"df":5}}}},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1},"y":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}},"z":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":4},"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":6}}},"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}},"f":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":9,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}},"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}},"|":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951}},"df":2}}}}}}}},"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1,")":{"docs":{},"df":0,"*":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":3}}}},"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":4,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":7}}},"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0}},"df":4}}}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"o":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}},"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":14,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":9,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}},".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":6,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}},".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":3},"u":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":9}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":9}}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":4,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"m":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"1":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951}},"df":6,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,":":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":4}}},"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,".":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"/":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"8":{"docs":{},"df":0,"/":{"docs":{},"df":0,"8":{"docs":{},"df":0,"6":{"docs":{},"df":0,"/":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"h":{"docs":{},"df":0,"_":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"_":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"p":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"2":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772}},"df":3}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":5}}},"g":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"0":{"docs":{},"df":0,"}":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"}":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":10,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":9}}}},"o":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":32},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772}},"df":9}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":5,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.6457513110645907}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":5}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":7,";":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}},"w":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"_":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"_":{"docs":{},"df":0,"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"_":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,";":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"i":{"docs":{},"df":0,"/":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":8}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":4.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":4.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":11}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":7}}},"o":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":2}},"d":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":18,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":12}}}},"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}},"k":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":5}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":9},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":3}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":2}}}},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":6},"r":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3}}}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772}},"df":2,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}},"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{},"df":0,"(":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}}},"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}},"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}},"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}},"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":3},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.23606797749979}},"df":3,"}":{"docs":{},"df":0,"=":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}}}}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"{":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2,"m":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"}":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}},"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,"n":{"docs":{},"df":0,"r":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1}}}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772}},"df":2,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":3},"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0}},"df":8,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0}},"df":2,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":12,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0}},"df":4,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"/":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"_":{"docs":{},"df":0,"9":{"docs":{},"df":0,"_":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"+":{"docs":{},"df":0,"i":{"docs":{},"df":0,"+":{"docs":{},"df":0,"\"":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":4,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}},"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":11,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}},"z":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}},"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":8}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":5}}}},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/quota/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":8}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/thresholding/":{"tf":3.1622776601683795}},"df":32}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}}}}},"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4}}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2,")":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.6457513110645907}},"df":2,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0}},"df":2},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0}},"df":2,",":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"}":{"docs":{},"df":0,"+":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.449489742783178}},"df":3},"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":5}}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}},"k":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.4142135623730951}},"df":1}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":3}},"e":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":2.0}},"df":1,"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7}}},"u":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":11}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772}},"df":19}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"v":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}},"v":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":4}}},"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":2},"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":7}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":11,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"2":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0}},"df":6,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}}}}}}}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0}},"df":2}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772}},"df":4,"(":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":4}}}}}},"/":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}},"2":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}},"1":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1},"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":8}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":4,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}}}}}}},"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772}},"df":2,"=":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}},"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}}}},"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"i":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":30,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.8284271247461903}},"df":4}}},"*":{"docs":{},"df":0,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}},"/":{"docs":{},"df":0,"y":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":1}}}},"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1,";":{"docs":{},"df":0,"&":{"docs":{},"df":0,"n":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"&":{"docs":{},"df":0,"n":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1,";":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5}}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":6}}}}}}},"e":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":32}},"g":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":2,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772}},"df":2,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":3.0}},"df":2,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}},"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0}},"df":4,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}}}},"t":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}},"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0}},"df":2}}}}}}},"j":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.4142135623730951}},"df":3}}}}}}}}}}}}}},"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1}}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":5}}},"w":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.7320508075688772}},"df":35,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":5}}},"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}},"x":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":28}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}},"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1}}}},"m":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":7,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":4},"y":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":6,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.449489742783178}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}},".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":3,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772}},"df":7,"i":{"docs":{},"df":0,"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}},"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12},"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2},"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":32,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}}}}},"p":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"(":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{},"df":0,"*":{"docs":{},"df":0,"1":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}}}}}}}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"(":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}},"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"_":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"x":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"r":{"docs":{},"df":0,"/":{"docs":{},"df":0,"1":{"docs":{},"df":0,"0":{"docs":{},"df":0,"0":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":8}}}}}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}},"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":4}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":12}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.0}},"df":1}}}},"p":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":5}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":11}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3,"s":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"r":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1}}}}},"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":6},"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":30,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":11},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":27,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}},"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"df":0,"d":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951}},"df":6}}}},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.0}},"df":9}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":10,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":6}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772}},"df":6,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"3":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":20,"[":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}},"s":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":3.0}},"df":4,"'":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12},"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":19,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"y":{"docs":{},"df":0,")":{"docs":{},"df":0,"=":{"docs":{},"df":0,"=":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11}}}},"o":{"docs":{},"df":0,"f":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}},"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":12,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":20,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3},"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":14}}}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":5,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":2}}}}}},"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"y":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}},"1":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":3.1622776601683795}},"df":1},"2":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":2.8284271247461903}},"df":1},"=":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}},"_":{"docs":{},"df":0,"1":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,"=":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{},"df":0,"=":{"docs":{},"df":0,"0":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}},"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"+":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}},"k":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":17}}}},"g":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":14}},"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"'":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":10}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2},"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":13,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":8,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":10}}}}}},"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":11}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0}},"df":13},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":7}}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"@":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,".":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"y":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2}},"d":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":8}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}},"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}},"y":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}}}}},"e":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.23606797749979}},"df":8}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":3}}}}}}},"h":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979}},"df":6,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":2}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":2}}}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":2}}}}}}},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":3}}}},"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":4.795831523312719},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":4.795831523312719},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":4.69041575982343},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.449489742783178}},"df":21,"'":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}}},"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":5}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0}},"df":2}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"y":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":5,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":21}}},"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":9,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}},".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}},"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}}},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":3,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":14}}}}},"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":6}},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":4.58257569495584},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":4.58257569495584},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":27,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}},"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772}},"df":1}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":9}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.6457513110645907}},"df":8}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":7,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772}},"df":3}}}}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":3}}}}},"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":1}}}}}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":3}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":16}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":1}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1,"l":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":4}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":16}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":25}}}},"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}},"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.4142135623730951}},"df":14,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"_":{"docs":{},"df":0,"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":4.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/introduction/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/quota/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.449489742783178}},"df":41,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{},"df":0,"1":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2,"(":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}},".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"(":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}},"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951}},"df":3,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"o":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":2}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":7}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.23606797749979}},"df":10}}}},"v":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":3},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.23606797749979}},"df":21}}}}},"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2,"n":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":4.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":5.477225575051661},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":4.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":5.477225575051661},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":26},"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}},"q":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3}},"2":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3}},"i":{"docs":{},"df":0,"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":3}}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":7}}}},"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":10}}}}}},"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6,"a":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.4142135623730951}},"df":2}}}}},"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772}},"df":2,",":{"docs":{},"df":0,"$":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}},"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3,"$":{"docs":{},"df":0,".":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}},"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":2},"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951}},"df":1}},"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":1},"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.4142135623730951}},"df":1}}},"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2,".":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}},"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}},"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":3,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2},"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":5}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":5}}},"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0}},"df":4,"_":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0}},"df":1,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"x":{"docs":{},"df":0,"_":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772}},"df":1}}},"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":3}}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":7}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":3},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":9}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":9,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":2}}}}}}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"y":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2}}}}}}}}},"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951}},"df":6,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}},"u":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":5,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.6457513110645907}},"df":2}}}}}}}}}}}},"f":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.8284271247461903}},"df":12,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4}}},"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":4}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0}},"df":2}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":2}}}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":9}}},"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":1},"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":3}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":5,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":19}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":8}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":16}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":5}}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":1}},"v":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":1}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.23606797749979}},"df":22,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"z":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"f":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"[":{"docs":{},"df":0,"z":{"docs":{},"df":0,"]":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":17}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":3}}}},"w":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}},"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0}},"df":4}}}}},"h":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1,"(":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.449489742783178}},"df":1,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":3}}}}},"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":10,"|":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951}},"df":2}}}}}}}}},"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}},"m":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,"=":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"=":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"n":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{},"df":0,"=":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"x":{"docs":{},"df":0,"}":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":2}},"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951}},"df":1,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0}},"df":6}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":3}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}},"w":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}},"s":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.0}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}},"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":30,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"r":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,",":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":10,"(":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"k":{"docs":{},"df":0,"_":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.23606797749979}},"df":1}}}},"[":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,")":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"{":{"docs":{},"df":0,"d":{"docs":{},"df":0,"}":{"docs":{},"df":0,"r":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2},"k":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":19},"p":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772}},"df":3}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":14,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}},"c":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"j":{"docs":{},"df":0,"i":{"docs":{},"df":0,":":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}}}}}}}}}}}},"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":7}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":5,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772}},"df":4}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}}}}},"d":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":1}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":6}}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":5}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":17}}}}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":21,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}},"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/segmentation/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":14,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":3.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":22}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.0}},"df":9}}}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":3.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7}},"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":2}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":3}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":3.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":2.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.7320508075688772}},"df":27,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":8,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}}}}}}}}}}},"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"(":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":4}}}}}}}}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}},"u":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979}},"df":1,"_":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":2}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":4}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":4},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":4}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":9,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4}}},"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":4}}}}}},"w":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":23,"(":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}},"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}},"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7,"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}},"_":{"docs":{},"df":0,"b":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951}},"df":1,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,"=":{"docs":{},"df":0,"p":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,"p":{"docs":{},"df":0,"_":{"docs":{},"df":0,"2":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,")":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2,"e":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":5.916079783099616},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":5.916079783099616},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":5.916079783099616},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":5.916079783099616},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772}},"df":11,"(":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}},".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772}},"df":4}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}},"=":{"docs":{},"df":0,"*":{"docs":{},"df":0,"/":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951}},"df":2}}}}}}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":12,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"p":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":12,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":2},"f":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":4}}}}},"u":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":3}}},"n":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0}},"df":5}}}}}},"c":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772}},"df":1,"(":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},".":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"k":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}},"_":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772}},"df":1}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.23606797749979}},"df":1}}},"g":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":9},"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":4.58257569495584},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":2.8284271247461903}},"df":6,".":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":2,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"(":{"docs":{},"df":0,"z":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,"[":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}},"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772}},"df":2}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2}}}}}},"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":5},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":2}}}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":10},"z":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":14}}},"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}},"p":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":2}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":3.1622776601683795}},"df":7,"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951}},"df":3}}},"s":{"docs":{},"df":0,"[":{"docs":{},"df":0,"z":{"docs":{},"df":0,"]":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":10,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":7,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772}},"df":4}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772}},"df":1}}}},"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":4,"\"":{"docs":{},"df":0,",":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"\"":{"docs":{},"df":0,",":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}},"l":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}},"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":10}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":2},"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3}}}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":5}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":22}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":15}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":2,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":4}},"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":3.0}},"df":8,"i":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":2.0}},"df":3}}},"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}},"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2,"{":{"docs":{},"df":0,"g":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":8}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":3}}}}}},"r":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":6,".":{"docs":{},"df":0,"z":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":4}}}},"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"/":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"/":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"0":{"docs":{},"df":0,"3":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2},"5":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2},"6":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"0":{"docs":{},"df":0,"1":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}},"2":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}},"3":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}},"4":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}},"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":4}}}}}}}}}}}}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"2":{"docs":{},"df":0,"d":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"/":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"2":{"docs":{},"df":0,"d":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951}},"df":2}}}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"/":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"/":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"/":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"2":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}},"h":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}},"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":3}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":5,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979}},"df":2}}}}}}}}},"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":21}},"t":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.0}},"df":2,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3}}}}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":17},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":7}}}}},"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"e":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1},"p":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/quota/":{"tf":1.4142135623730951}},"df":14}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":8}}},"o":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979}},"df":1},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":14},"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":11,".":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"%":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":5}}}}}},"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":3}}},"i":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951}},"df":8}}},"f":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":3}}},"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":4}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":6}}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951}},"df":15}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":10}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":5}}}}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":1}}}}}}}}},"h":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11}},"d":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.4142135623730951}},"df":6}},"g":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":3}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}}}},"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772}},"df":8,"_":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"k":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2,"=":{"docs":{},"df":0,"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":2.0}},"df":3},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1},"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":3,"'":{"docs":{},"df":0,"=":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"x":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"df":0,"'":{"docs":{},"df":0,"=":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"y":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"h":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":6,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":4}}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":4,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}},"s":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":9},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":6}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}},"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\"":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"w":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}},"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}},"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":3}}}}}}}},"t":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":5},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":5,",":{"docs":{},"df":0,"t":{"docs":{},"df":0,"_":{"docs":{},"df":0,"y":{"docs":{},"df":0,",":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,",":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"ü":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.7320508075688772}},"df":1}}}}}}}},"k":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":11}},"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":1}}}},"s":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":21,"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2,"_":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":2}}}}}}}}}}},"2":{"docs":{},"df":0,"_":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"3":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1,"_":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}},"4":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1,"_":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}},"5":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1,"_":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"n":{"docs":{},"df":0,"y":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":7}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":5}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":2}},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":3.3166247903554}},"df":4}}}}},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":4}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":17,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}}}}}}},"x":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.23606797749979}},"df":7,"{":{"docs":{},"df":0,"d":{"docs":{},"df":0,"}":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1}}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":4}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":6}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":3},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951}},"df":10}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":8,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}},"=":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}},"\\":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,")":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"{":{"docs":{},"df":0,"d":{"docs":{},"df":0,"}":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":1}},"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":4},"k":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":7}},"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":6}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":11}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":4}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}},"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":9},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":3.872983346207417}},"df":14,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":9,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}}},"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":8}}}},"i":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2,"f":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":18,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"(":{"docs":{},"df":0,"5":{"docs":{},"df":0,"0":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":3},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":3}}},"t":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772}},"df":1}}},"n":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1,"\"":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}},"/":{"docs":{},"df":0,"(":{"docs":{},"df":0,"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"+":{"docs":{},"df":0,"f":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1}},"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}}},"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951}},"df":3},"y":{"docs":{},"df":0,"(":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":1}}}}}}}}}}},"o":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":5,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1,"\"":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}},"/":{"docs":{},"df":0,"(":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"+":{"docs":{},"df":0,"f":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":5.5677643628300215},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":5.5677643628300215},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":3.1622776601683795}},"df":7}}}},"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":3.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":3.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,",":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":3}},"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}},"i":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":17},"u":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951}},"df":6},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.0}},"df":3}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":1}}}},"w":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":31}},"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,"p":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":8},"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":6}}}}},"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":3}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":5}}}}}}}},"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":1}}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":9},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}}}},"k":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":3}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951}},"df":1}}}},"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":7}}},"z":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951}},"df":1}}}},"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":11,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":1}}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":11}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":4}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.8284271247461903}},"df":1}}}},"r":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}},"s":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/installation/":{"tf":3.0},"https://mt2-erlangen.github.io/introduction/":{"tf":4.58257569495584},"https://mt2-erlangen.github.io/otsu/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.0}},"df":38,".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}},":":{"docs":{},"df":0,"m":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2},"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":6,"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":4}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"y":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1}}},"u":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":5.196152422706632},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":5.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":5.196152422706632},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":5.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/cannyedge/":{"tf":4.123105625617661},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":5.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/segmentation/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/thresholding/":{"tf":2.0}},"df":27,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"=":{"docs":{},"df":0,"*":{"docs":{},"df":0,"/":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":2}}}},"[":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}},"r":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951}},"df":2,"i":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":10}},"n":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}},"o":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":3}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":4}}},"{":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":2,"}":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951}},"df":1}}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":7,"f":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":17}}}},"y":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"[":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}},"i":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":7},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":8,"(":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"3":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.7320508075688772}},"df":3}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.7320508075688772}},"df":6}}}}},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.449489742783178}},"df":18}},"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":3.1622776601683795},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.7416573867739413},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":4.242640687119285},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.7320508075688772}},"df":15,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}},".":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}},"1":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":2},"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}},"w":{"docs":{},"df":0,"_":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":2.0}},"df":2}},"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":4}},"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":26}},"r":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}}}},"y":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.4142135623730951}},"df":10}},"e":{"docs":{},"df":0,"'":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}},"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1},"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2}},"b":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0}},"df":2}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":7}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":4.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":4.0}},"df":2,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.7320508075688772}},"df":2,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0}},"df":2}}}}}}}}}},"2":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.4142135623730951}},"df":2}}}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1}}},"l":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":7}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"'":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":13}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":5}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":5}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}},"d":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":8}}},"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3}}}}}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":17}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0}},"df":1}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":7}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.4142135623730951}},"df":6}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0}},"df":6},"k":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":2.23606797749979},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":3.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/otsu/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.4142135623730951}},"df":44,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":2.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.23606797749979}},"df":7},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":8}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.7320508075688772}},"df":1}}}}},"x":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":4.47213595499958},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/cannyedge/":{"tf":2.8284271247461903},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.449489742783178},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":3.605551275463989}},"df":15,"'":{"docs":{},"df":0,",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":5}}},"(":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},",":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":4.358898943540674},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":6},"y":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}},"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1},"_":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2,",":{"docs":{},"df":0,"y":{"docs":{},"df":0,"_":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":2.6457513110645907},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":5,",":{"docs":{},"df":0,"x":{"docs":{},"df":0,"_":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2}}},"y":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.4142135623730951}},"df":2,",":{"docs":{},"df":0,"y":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":4,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0}},"df":1}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,",":{"docs":{},"df":0,"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}}}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"y":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":2.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":3.3166247903554},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":3.872983346207417},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.7320508075688772},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":3.605551275463989},"https://mt2-erlangen.github.io/cannyedge/":{"tf":3.4641016151377544},"https://mt2-erlangen.github.io/edgedetection/":{"tf":2.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":3.605551275463989}},"df":14,"(":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}},"1":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.4142135623730951}},"df":1,"[":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"x":{"docs":{},"df":0,")":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}}}}}}}},"_":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.4142135623730951}},"df":3}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":2,"'":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":2}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"'":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0}},"df":13}},"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":2}}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0}},"df":2}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0}},"df":2}}}}},"z":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.4142135623730951}},"df":3,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.4142135623730951}},"df":5}}},"i":{"docs":{},"df":0,"p":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":6}}}}},"title":{"root":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":1},"1":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":5},"2":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":5,"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0}},"df":1},"1":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0}},"df":1}}}}}}}}},"3":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":5},"4":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":5},"5":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":5},"6":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":5},"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mt2-erlangen.github.io/archive/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6}}}}}}}},"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0}},"df":1}}}}}}}}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0}},"df":1}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2}}}}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}}}}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":3}}}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0}},"df":6}}}}},"d":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0}},"df":2}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}},"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"tf":1.0}},"df":12}}}}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":6}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0}},"df":6}}}}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mt2-erlangen.github.io/installation/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"j":{"docs":{"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"tf":1.0},"https://mt2-erlangen.github.io/clearvolume/":{"tf":1.0}},"df":3}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0}},"df":3}}}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{"https://mt2-erlangen.github.io/otsu/":{"tf":1.0}},"df":1,"'":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0}},"df":2}}}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6}}}},"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.4142135623730951},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/import_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/import_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":28}}}}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mt2-erlangen.github.io/quota/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0}},"df":1}}}}}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/checklist/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"tf":1.0}},"df":2}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_eclipse/":{"tf":1.0},"https://mt2-erlangen.github.io/set_args_intellij/":{"tf":1.0}},"df":6}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0}},"df":1}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0}},"df":1}}}}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"tf":1.0},"https://mt2-erlangen.github.io/img_transform_theory/":{"tf":1.0}},"df":3}}}}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0}},"df":2}}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mt2-erlangen.github.io/archive/WS2021/":{"tf":1.0}},"df":1}}}}}}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"https://mt2-erlangen.github.io/appendix/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/projection/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/2020/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"tf":1.0},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"tf":1.0},"https://mt2-erlangen.github.io/cannyedge/":{"tf":1.0},"https://mt2-erlangen.github.io/conclusion/":{"tf":1.0},"https://mt2-erlangen.github.io/edgedetection/":{"tf":1.0},"https://mt2-erlangen.github.io/introduction/":{"tf":1.0},"https://mt2-erlangen.github.io/otsu/":{"tf":1.0},"https://mt2-erlangen.github.io/segmentation/":{"tf":1.0},"https://mt2-erlangen.github.io/thresholding/":{"tf":1.0}},"df":20}}}}}}},"documentStore":{"save":true,"docs":{"https://mt2-erlangen.github.io/":{"body":"\n","id":"https://mt2-erlangen.github.io/","title":""},"https://mt2-erlangen.github.io/appendix/":{"body":"MRI is a Fourier machine\nMRI acquires data in the frequency domain (also known as $k$-space), and the relationship between such $k$-space data and image contents reads,\n$$ s(k_x, k_y) = \\int \\rho(x, y) e^{-i \\pi (k_x \\cdot x + k_y \\cdot y)} \\text{d}x \\text{d}y $$\nIt is worth noting from this equation that,\n\n\nthe image content $\\rho$ is discretized into a two-dimensional (2D) matrix with its spatial coordinates $x$ and $y$.\n\n\nthe MR signal $s$ is sampled at the $k$-space points ($k_x$, $k_y$), and is an integral over all discrete points ($x$, $y$) in image domain.\n\n\nthe MR signal is sampled is a point-by-point manner, which is an important reason why MRI is slow.\n\n\nIn short, Fourier transform plays an important role in MRI. The exploration of Fourier transform properties has fostered many crucial MRI developments and innovations.\nTask Optional.1: The equation above shows how a 2D image $\\rho(x,y)$ can be formed in MRI. Can this equation be extended to 3D acquisition? In other words, instead of acquiring one 2D plane, can we use MRI to acquire 3D volume such as to cover a whole organ (like the brain)? May you try to write down the equation for the 3D Fourier transform? What may be the difficulties in reconstructing 3D volume images? Think about computational time and organ motion during acquisition.\nSimple example: one-dimensional (1D) Fourier transform\nIn this hands-on example, we will focus on 1D signal and its corresponding Fourier transform. Therefore, the above equation reduces to\n$$ s(k_x) = \\int \\rho(x) e^{-i \\pi k_x \\cdot x} \\text{d}x $$\nIn the regime of digital signal processing, we deal with discretized signal,\n$$ s(k_x) = \\sum_x \\rho(x) e^{-i \\pi k_x \\cdot x} $$\nTherefore, given the dicretized signal $\\rho(x)$, we can compute its corresponding Fourier transform $s(k_x)$ at any $k$-space point $k_x$.\nTask Optional.2: Suppose we have a rectangular signal,\n$$\\rho(x) = 1$$\nfor $x \\in [-10, 9]$ and $x$ is an integer. That is, $x=-10,-9,-8,-7,\\cdots,9$.\nTherefore, the Fourier transform of $\\rho(x)$ at $k_x = 0$ is simply\n$$ s(0) = \\sum_{x=-10}^{9} 1 e^{-i \\pi 0 \\cdot x} = 20 $$\nIf we define $k_x \\in [-0.3, 0.3]$ with a step size of $0.01$. That is, $k_x = -0.30, -0.29, -0.28, \\cdots, 0.30$. To compute $s(k_x)$, we provide the following Java code:\nimport org.apache.commons.math3.analysis.function.Sinc;\n\npublic class project_box1d {\n\n public static void main(String[] args) {\n\n double kx_min = -0.3;\n double kx_max = 0.3;\n double kx_step = 0.01;\n for (double kx = kx_min; kx <= kx_max; kx += kx_step) {\n\n double real_s = 0.; // real part\n double imag_s = 0.; // imaginary part\n\n int x_num = 0;\n for (int x = -10; x < 10; ++x) {\n real_s += Math.cos(Math.PI * kx * x);\n imag_s += /* */;\n x_num++;\n }\n\n real_s /= x_num;\n imag_s /= x_num;\n\n var sinc = new Sinc(true);\n double sinc_s = sinc.value(kx * 10);\n\n System.out.println(\"integral: \" + String.format(\"%.2f\", real_s/x_num) + \"; sinc: \" + String.format(\"%.2f\", sinc_s));\n }\n }\n}\n\n\n\nPlease fill in the missing codes to compute the imaginary part of $s$.\n\n\nTry to run your solution in Java.\n\n\nAre the values between real_s and sinc_s the same? If so, may you explain why?\n\n\nTo potential prepare you for scientific computing, we also provide the Python solution:\n# %% Import packages\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# %% Compute the signal integral (Fourier transform)\nx = np.arange(-10, 10, 1)\n\nkx = np.arange(-0.3, 0.3 + 1E-6, 0.01)\n\ns = np.zeros_like(kx, dtype=np.complex64)\n\nfor n in range(len(kx)):\n s[n] = np.sum(np.exp(-1j * np.pi * kx[n] * x)) / len(x)\n\n# %% scatter plots\nfig, ax = plt.subplots(1, 3, figsize=(12, 3))\n\nx1 = np.arange(0, len(x)*2, 1)\ny1 = np.zeros_like(x1)\ny1[len(x)//2 : len(x) + len(x)//2 - 1] = 1\n\nax[0].plot(x1 - len(x1) // 2, y1, '-b')\nax[0].set_ylim([-0.5, 2])\nax[0].set_title('box function')\n\nax[1].plot(kx, np.real(s), '-r')\nax[1].set_xticks(np.arange(np.min(kx), np.max(kx), 0.1))\nax[1].grid()\nax[1].set_title('Fourier transform')\n\nax[2].plot(kx, np.sinc(kx*10), '-g')\nax[2].set_xticks(np.arange(np.min(kx), np.max(kx), 0.1))\nax[2].grid()\nax[2].set_title('sinc(kx * 10)')\n\nplt.show()\n\nYou should be able to get the following plots:\nWhat happens if you change the scaling factor of the sinc function. For instance, instead of using np.sinc(kx*10), what does the green curve look like if you change $10$ to $1$?\nBack to the Image Reconstruction\n","id":"https://mt2-erlangen.github.io/appendix/","title":"Project Work Optional"},"https://mt2-erlangen.github.io/archive/":{"body":"2020\n2021\n","id":"https://mt2-erlangen.github.io/archive/","title":"Archive"},"https://mt2-erlangen.github.io/archive/2020/":{"body":"Homework\nExercise 1\nExercise 2\nExercise 3\nExercise 4\nExercise 5\nExercise 6\nProject Work\nIntroduction\nVolume\nProjection\nSinogram\nBackprojection\nReconstruction\nCurrent Semester\nGo to current semester\n","id":"https://mt2-erlangen.github.io/archive/2020/","title":"Semester 2020"},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"body":"Backprojection\nIf we have a look at the sinogram values corresponding to one detector position we get some information about the projected object.\nFor instance, we can see the profile of the projected circle in the following image.\n\nHowever, if we have no access to the original volume slice we can not tell anything about the distance of the object to the detector.\nAll the following situations would generate the same projection!\n\nSo apparently, we get some information in the direction of the detector plane, but all information orthogonal to the detector plane\nis lost.\nSo one thing that we can do if we want to perform a reconstruction from the sinogram is to take the information in direction of the detector plane\nand uniormly smear it into the direction orthogonal to the detector plane in a range where we assume the object is located.\nWe call this process backprojection.\n\n\n \n\n\n The backprojection smears the value of the projection uniformly over the paths of the rays\n\n\nUse the following method, that is calculating the value that we want to smear back.\n // in mt.Projector\n public float backprojectRay(mt.Image sinogramSlice, int angleIdx, float s) {\n sinogramSlice.setOrigin(0.f, -sinogram.physicalHeight * 0.5f);\n return sinogramSlice.interpolatedAt(angleIdx * sinogram.spacing, s) // * sinogram.spacing is necessary because spacing is not valid for our angle indices (actually each coordinate should have their own spacing. That's the revenge for us being lazy.).\n / (volume.physicalWidth() * Math.sqrt(2)) // we guess that this is the size of our object, diagonal of our slice\n / sinogramSlice.width() // we will backproject for each angle. We can take the mean of all angle position that we have here.\n ;\n }\n\nUse this method in backprojectSlice to backproject for each pixel x, y a horizontal line of the sinogram (all possible angles).\n // in mt.Projector\n public void backprojectSlice(int sliceIdx)\n // A helper method\n public void backprojectSlice(int sliceIdx, int angleIdx)\n\nTo do this \n\nCreate a loop over all angleIdx\n\nCall the helper method for all angle indices (there are sinogram.width angles)\n\n\nIn public void backprojectSlice(int sliceIdx, int angleIdx)\n\nGet the slice with index sliceIdx\nLoop over all x, y of this image\nCalculate the physical coordinates from the integers x and y (times spacing plus origin!)\nCalculate the actual angle theta from the angleIdx\nCalculate s from the physical coordinate.\n\ns is the physical distance of the point $\\vec{x}$ from the ray through the origin at angle theta.\nCan you write down the line equation for this line?\nCan you use the line equation to calculate the distance of $\\vec{x}$ an the line through the origin?\n\n\nCall backprojectRay with angleIdx and s\nAdd this result of backprojectRay to current value at position x, y and save the sum at that position\n\n\n\n\n\n\nReconstruction\nNext, we want to try out whether we can use our backprojection to reconstruct a volume.\nWhenever we want to test whether a method works, we need something to compare it with.\nThe best possible result, the \"true\" values, is usally called ground truth.\nWe can use one of the reconstructions that we downloaded from the Cancer Imaging Archive as a ground truth volume.\nThe best possible result for our reconstruction is to come as close as possible to the original (ground truth) volume.\nCreate a file src/main/java/project/GroundTruthReconstruction.java.\n// Your name <your idm>\npackage project;\n\nimport mt.Projector;\nimport mt.Volume;\n\nclass GroundTruthReconstruction {\n\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n }\n}\n\nIt's important that we never mix up the ground truth with the results of our algorithm.\nCreate therefore an instance of Projector that will have the task to simulate projections.\nYou can call it groundTruthProjector.\nOpen a test volume and create an empty (all pixels 0) sinogram. They are needed to call the constructor of Projector.\nCall groundTruthProjector.projectSlice with an arbiray slice index.\n\nCreate an empty volume (all pixels 0) with the same dimensions as the ground truth volume and a copy of groundTruthProjector.sinogram().\nYou can add the following method to mt.Volume to create copies.\n // in mt/Volume.java\n public Volume clone(String name) {\n Volume result = new Volume(width(), height(), depth(), name);\n IntStream.range(0, depth()).forEach(z-> result.getSlice(z).setBuffer(Arrays.copyOf(slices[z].buffer(), slices[z].buffer().length)));\n return result;\n }\n\nCreate a new projector reconstructionProjector with the empty volume and the copy of our sinogram.\nUse backprojectSlice(...) to create your first reconstruction of a slice.\nA good way to test your implementation is to incremently apply more and more backprojections on your reconstruction.\nWhen you calculated the sinogram for SLICE_IDX you can use\n// in project.GroundTruthReconstruction.java\n\n// Choose the slice in the middle. Hopefully showing something interesting.\nfinal int SLICE_IDX = ????; // < Use a index for which you already calculated `projectSlice`\n\nfor (int i = 0; i< projector.numAngles(); i++ ) {\n try {\n TimeUnit.MILLISECONDS.sleep(500);\n } catch (InterruptedException e) {\n e.printStackTrace();\n }\n projector.backprojectSlice(SLICE_IDX, i);\n projector.volume().getSlice(SLICE_IDX).show();\n\n //// Optionally save the intermediate results to a file:\n //DisplayUtils.saveImage(projector.volume().getSlice(SLICE_IDX), \"/media/dos/shepp_9_\"+i+\".png\");\n}\n\nThis will wait 500ms between each backprojection. Do your rays meet at the right points? Use a simple test image with\nonly a single white circle if not. This should help you debug the issue.\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n Backprojection using 9 views\n Backprojection using 100 views\n \n\nProject Report\nFor the project report, you should briefly describe your backprojection reconstruction algorithm.\n\nDescribe your implementation, create at least one figure supporting your explanations.\nYou should never mention implementation details like for-loops or variable names, but important parameters like the number\nof projection angles you used\nTest your reconstruction algorithm\n\nusing a simple test image like a white circle or square\nusing a CT reconstruction that you downloaded . Cite the data source!\n\n\nHow do images look like? If they are blurry, what is the reason for that.\nShow the images in your project report.\nMention in one sentence how the Filtered Backprojection algorithm tries to solve that problem.\nHow big are your errors in comparison to the ground truth? If you are using a measure like the Mean Squared Error give\na formula defining it.\n\nThe content for this section should be about one page long. \nPrevious section\nNext section\n","id":"https://mt2-erlangen.github.io/archive/2020/backprojection/","title":"Project Work 5 – Backprojection"},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"body":"We've collected a small checklist for things that you might forget when writing your project work.\nFor a detailed description on how to write the report, refer to the exercise slides.\nThe project report can be in English or German.\nTo achieve full 10 points for writing style...\n\nUse the templates we provide to you. Do not modify the style or the formatting. No ornaments for page numbers!\nUse scientific references to prove your explanantions and to clearly separate your work from the work of others.\nDo not use more than two references that are websites only. If you have to cite a website use the recommended style from\nthe exercise slides.\nCreate a bibliography. Follow the advises from the exercise slides.\nThe bibliography must be sorted (either alphabetically when using the Name/Year citation style or\nby the order you use them in the text when numbering the sources).\nUse the same citation style for all your references.\nDo not use footnotes!\nCheck your spelling: there shouldn't be any obvious spelling errors that can be detected by Word.\nAll symbols in equations should be explained in the text.\nAll equations, figures and tables (tables probably not needed) should be numbered and referenced in the text.\nAll your figures should look professional.\nThey should not be blurry or hand-drawn and images should not have a window border of ImageJ.\nThey should not overlap with the text.\nAll figures should have captions giving a brief description what the figure shows. The caption should be below the figure.\nAll figures should be full-width, not next text. A figure can contain multiple images next to each other.\nA list of figures is not needed.\nDo not use abbreviation without introducing them. The first time you should write computer tomography (CT).\nAfter that, CT is enough.\nLabel all axes in all plots and coordinate systems!\nNever use \"Ich\" or \"I\". In English texts it's acceptable to use \"we\" even though you did all the work alone.\n\nTo obtain all the points for the content of your report\n\nCheck whether you have addressed all the questions in the task description.\nCheck for numbers in the questions. Do you really have two advantages and two disadvanges of using computer tomography?\n\n","id":"https://mt2-erlangen.github.io/archive/2020/checklist/","title":"Checklist – Project Report"},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"body":"ClearVolume looks like this\n\nYou can integrate it into your development enviroment by adding this\nline to your gradle.build.\nimplementation 'sc.fiji:imglib-clearvolume:1.4.2'\n\nYou need to start ImageJ with (instead of (new ij.ImageJ()).exitWhenQuitting(true);)\n net.image.ImageJ ij = new net.imagej.ImageJ();\n ij.launch();\n\nI guess, this only works if you are running Java 1.8 (at least on my Linux machines)!\n\nWhat will always work, is to install Fiji and\nactivate ClearVolume under Help > Update... > Manage update sites and\nselect \"Clear Volume\"\n\nFiji also has many other PlugIns to view volumes.\nBack to volumes\n","id":"https://mt2-erlangen.github.io/archive/2020/clearvolume/","title":"ClearVolume Intregration"},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"body":"Signals and Convolution\nSubmission deadline: 11.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImageJ\nThe image processing program we want to use during this semester is called ImageJ.\nIt was developed at the US National Institutes of Health and is used nowadays especially in research \nfor medical and biological images.\nIf you want to, you can download a stand-alone version of the program here.\nGetting started\nImageJ can also be used as a Java library.\nWe already created a Java project that uses ImageJ.\nYou can download it from https://github.com/mt2-erlangen/exercises-ss2021 and import with the IDE of your choice:\n\nInstructions for Eclipse\nInstructions for IntelliJ\n\nTasks\n\n\nYou should now be able to execute the file src/main/java/exercises/Exercise01.java\n\n\nThe following code is opening the ImageJ main window and exits the running program when the window is closed.\npublic class Exercise01 {\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n }\n}\n\nIntelliJ will only allow to run Exercise01 when there are no errors in the project. You can just out-comment the method lme.Algorithms.convolution1d until you implemented your Signal class.\nSignal.java\n4 Points\nAs a first step, we will implement the class Signal \nwhich should hold a signal of finite length.\nCreate the file src/main/java/mt/Signal.java.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\nimport lme.DisplayUtils;\nimport ij.gui.Plot;\n\npublic class Signal {\n\n}\n\nSignal should have the following members\n protected float[] buffer; // Array to store signal values\n protected String name; // Name of the signal\n protected int minIndex; // Index of first array element (should be 0 for signals)\n\nImplement two constructors for Signal\n public Signal(int length, String name) // Create signal with a certain length (set values later)\n public Signal(float[] buffer, String name) // Create a signal from a provided array\n\nImplement the following getter methods for Signal\n public int size() // Size of the signal\n public float[] buffer() // Get the internal array \n public int minIndex() // Get lowest index of signal (that is stored in buffer)\n public int maxIndex() // Get highest index of signal (that is stored in buffer)\n public String name() // Get the name of the signal\n\nNext, we want to visualize our Signal in the method show. You can use provided function lme.DisplayUtils.showArray.\nTo test it, create a Signal with arbitray values in the main method of Exercise01 and call its show method.\n public void show() {\n DisplayUtils.showArray(this.buffer, this.name, /*start index=*/0, /*distance between values=*/1);\n }\n\nIn our black board exercises, we agreed that we want to continue our signals with zeros where we don't have any values stored.\nIf we access indices of our Signal with values smaller than minIndex() or larger maxIndex() we want to return 0.0f.\nIf a user accesses an index between minIndex() and maxIndex() we want to return the corresponding value stored in our array.\n\nImplement the method atIndex and setAtIndex. Please be aware that minIndex can be smaller than 0 for subclasses of Signal.\nIf setAtIndex is called with an invalid index (smaller than minIndex or greater than maxIndex), it's ok for the program to crash.\nThis should not happen for atIndex.\n public float atIndex(int i)\n public void setAtIndex(int i, float value)\n\nYou can check the correctness of atIndex/setAtIndex with the test testAtIndex in file src/test/java/SignalTests.java.\nLinearFilter.java\n3 Points\nImplement LinearFilter in file src/main/java/LinearFilter.java as a subclass of Signal.\nLinearFilter should work like Signal except its minIndex should be at - floor(coefficients.length/2) as in the exercise slides.\n\nLinearFilter should have a constructor that checks that coefficients is an array of odd size or throws an error otherwise (any error is ok).\n public LinearFilter(float[] coefficients, String name)\n\nand a method that executes the discrete convolution on another Signal input and returns an output of same size.\n public Signal apply(Signal input);\n\nYou should be able to directly use the formula from the exercise slides (f is the input signal, h our filter, $L$ the filter length)\n$$K = \\lfloor L/2 \\rfloor$$\n$$g[k] = \\sum_{\\kappa=-K}^{K} f[k-\\kappa] \\cdot h[ \\kappa ]$$\nor with our minIndex/maxIndex methods for each index $k$ of the output signal.\n$$g[k] = \\sum_{\\kappa=h.\\text{minIndex}}^{h.\\text{maxIndex}} f[k-\\kappa] \\cdot h[\\kappa] $$\nBe sure that you use atIndex to access the values of input and the filter.\n\nYou can test your convolution function with the tests provided in src/test/java/LinearFilterTests.java.\nGood test cases are:\n\n{0,0,1,0,0}: this filter should not change your signal at all\n{0,1,0,0,0}: this filter should move your signal one value to the left\n{0,0,0,1,0}: this filter should move your signal one value to the right\n\nQuestions\n3 Points\nIn this task we want to convolve a test Signal with three different linear filters.\nFilter the signal $f[k]$ Signal(new float[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \"f(k)\")\nwith filters\n\n$h_1[k]$: {1.0f/3 ,1/3.f ,1/3.f},\n$h_2[k]$: {1/5.f, 1/5.f , 1/5.f, 1/5.f, 1/5.f},\n$h_3[k]$: {0.5f, 0, -0.5f}.\n\nSave the images of the input signal and filtered results (recommended filetype: png).\nCreate a PDF document (e.g. with Word or LibreOffice) with those images in which you describe briefly how the filters modified the input signal and why.\nSubmitting\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nThen, compress your source code folder src to a zip archive (src.zip) and submit it and your PDF document via StudOn!\n","id":"https://mt2-erlangen.github.io/archive/2020/exercise-1/","title":"Exercise 1"},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"body":"\n\n\n\n\nSubmission deadline: 18.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nStatistical Measures\nIn this exercise, we want to have a look on how we can analyze signals using simple statistical measures.\nWe will use a freely available ECG data set with the goal to distinguish healthy from patients with heart rythm problems.\n\nYou can find the original data set here\nbut we recommend to use a post-processed version available on studOn.\nGradle Build System\nIn Medizintechnik II we use the build system Gradle.\nGradle is especially popular for Android projects since it's easy to add new software dependencies that will be automatically\ndownloaded.\nIn our case, the published data set is saved as Matlab *.mat files.\nTo read those files, an external dependency was already added to our build.gradle file.\n implementation 'us.hebi.matlab.mat:mfl-core:0.5.6'\n\ndoes the magic and automatically downloaded a *.mat file reader.\nIn case, you need to add external software to your own projects you can use this search engine.\nTasks\nLoading one of File of the Data Set\nLoad the file src/main/java/exercises/Exercise02.java (available here (Click the raw button)) into your existing project.\nIt alread contain some code for parsing the program parameters:\n public static void main(String[] args) throws IOException {\n\t(new ij.ImageJ()).exitWhenQuitting(true);\n\n\tSystem.out.println(\"Started with the following arguments:\");\n\tfor (String arg : args) {\n\t System.out.println(arg);\n\t}\n\n\tif (args.length == 1) {\n\t File file = new File(args[0]);\n\t if (file.isFile()) {\n\t\t// Your code here:\n\n\n\t } else {\n\t\t System.err.println(\"Could not find \" + file);\n\t }\n\n\t} else {\n\t System.out.println(\"Wrong argcount: \" + args.length);\n\t System.exit(-1);\n\t}\n\nLaunch Exercise02 with the one of the files of the data set as an argument (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat)!\n\nHow to do that in Eclipse\nHow to do that in IntelliJ\n\nYour program should print now the file name you selected:\n\nRemember to never put file names directly in your code. Your program will then only work on your machine!\nLet's open this file!\nif (file.isFile()) {\n // A file should be opened \n us.hebi.matlab.mat.types.Matrix mat = Mat5.readFromFile(file).getMatrix(0);\n Signal heartSignal = new mt.Signal(mat.getNumElements(), \"Heart Signal\");\n for (int i = 0; i < heartSignal.size(); ++i) {\n\t heartSignal.buffer()[i] = mat.getFloat(i);\n }\n heartSignal.show();\n\n\n} else if (file.isDirectory()) {\n\nYou should now see the signal. However, this plot does not have any labels with physical units attached.\nWe will change that later.\n\nExtension of Signal.java\n4 Points\nTo analyze this and other signals, we will extend our Signal class.\nPlease implement the following methods in Signal.java that calculate some descriptive properties of the signal:\n public float min() //< lowest signal value\n public float max() //< largest signal value\n public float sum() //< sum of all signal values\n public float mean() //< mean value of the signal\n public float variance() //< variance of the signal\n public float stddev() //< standard deviation of the signal\n\nTest the methods in your main function and check whether the calculated values seem plausible\nby looking at your plot and printing the calculated values.\nPhysical Dimensions\n1 Points\nThe code for this section belong to Signal.java\nIn the last exercise, we treated signals as pure sequence of numbers without any physical dimensions.\nBut for medical measurements physical dimensions are important.\nWe want to extend our plot to look like this with the horizontal axis labeled with seconds:\n\nTo do this we will add a new member to our signal that's describing the physical distance between two samples\n protected float spacing = 1.0f; //< Use 1.0f as a default when we don't set the physical distance between points\n\nAdd also a setter and getter method\n public void setSpacing(float spacing) \n public float spacing() \n\nRead in the discription of the data set the sampling frequency of the signal\nand use it to calculate the spacing between two samples. Set this property setSpacing in the main method.\nNext, we want to change show() to regard our spacing and to accept a ij.gui.Plot so that we can set the axis of our plot.\n public void show(Plot plot) {\n\t DisplayUtils.showArray(buffer, plot, /*start of the signal=*/0.f, spacing);\n }\n\nBecause we are lazy, we can still keep the original usage of show()\n public void show() {\n\t DisplayUtils.showArray(buffer, name, , /*start of the signal=*/0.f, spacing);\n }\n\nPlease create an instance of ij.gui.Plot in the main method of Exercise02 with descriptive labels for both axis and use if for heartSignal.show(...).\n\n// Constructs a new Plot with the default options.\nPlot plot = new Plot(\"chosee title here\", \"choose xLabel here\", \"choose yLabel here\")\nheartSignal.show(plot);\n\n//... add here more plotting stuff\n\nplot.show()\n\nDetermine the Heart Frequency\n5 Points\nThe remainder of this exercise will be implemented in Exercise02.java\nCreate a file src/main/java/lme/HeartSignalPeaks.java with following content\npackage lme;\n\nimport java.util.ArrayList;\n\npublic class HeartSignalPeaks {\n\tpublic ArrayList<Double> xValues = new ArrayList<Double>();\n\tpublic ArrayList<Double> yValues = new ArrayList<Double>();\n}\n\nArrayList behave like arrays, except you can add new items to make it longer. You can read more about them here.\nWe now want to find the peaks of the heart signal. We do that by finding local maxima within region that are above a certain\nthreshold (here in blue).\nFind a good value of this threshold so that all peaks are above this value.\nYou may use mean(), max(), min() to calculate it.\nYou can see your threshold by ploting it:\n plot.setColor(\"blue\");\n plot.add(\"lines\", new double[] { 0, /* a high value */10000 }, new double[] { threshold, threshold });\n\n\nImplement the following method that finds all peaks of the signal.\n public static lme.HeartSignalPeaks getPeakPositions(mt.Signal signal, float threshold)\n\nTo determine the signal peaks, one can use normal maximum search over the signal values.\nSave the found maximum value (i.e. signal amplitude) in x(max) and\nthe location of maximum (i.e. the time at which the peak occurs) in y(arg max).\nYou can implement the peak finding method as follows:\n\n\nLoop over the signal and at each index\n\n\nUse boolean variable to determine if the current signal value is above the threshold.\n\n\nIf the previous signal value was above the threshold (i.e boolean value was true), and the current value is below threshold (i.e boolean value is false)\n\n\nAdd the previous signal value as a instance of HeartSignalPeaks (like peaks.xValues and peaks.yValues)\n\n\nThis is a suggested workflow, but feel free to use your own ideas to efficently find the peaks of the signal.\nYou can plot the peaks you have found:\n plot.setColor(\"red\");\n plot.addPoints(peaks.xValues, peaks.yValues, 0);\n\nNext, create a Signal with the difference in time between succesive peaks (import import java.util.ArrayList;). \n\tpublic static mt.Signal calcPeakIntervals(lme.HeartSignalPeaks peaks) {\n\t\tArrayList<Double> peakPositions = peaks.xValues;\n\t\tif (peakPositions.size() > 1) {\n\t\t\tSignal intervals = new mt.Signal(peaks.xValues.size() - 1, \"Peak Intervals\");\n\n\t\t\tfor (int i = 0; i < peakPositions.size() - 1; ++i) {\n\t\t\t\tintervals.buffer()[i] = (float) (peakPositions.get(i + 1) - peakPositions.get(i));\n\t\t\t}\n\t\t\treturn intervals;\n\t\t} else {\n\t\t\treturn new mt.Signal(1, \"No Intervals found\");\n\t\t}\n\t}\n\nYou can use that signal to determine the mean cycle duration (peakIntervals.mean()), the mean heart frequency ((1. / intervals.mean())) and\nbeats per minute (60. * 1. / intervals.mean()). Print those values!\nSummary of tasks\nTo summarize the list of tasks that needs to be implemented to complete this exercise\n\nSet the file path correctly to load the signal into your program (Ensures you can load the signal inside the program)\nAdd labels to the plot, include spacing variable in signal class for visualizing plots in physical dimensions.\nImplement methods to compute statistical measures (like mean, median,...). (Use the formula provied in lecture/exercise slides)\nDetermine the threshold (follow the description provided here)\nFind the peaks (follow the description provided here)\nCalculate intervals between the peaks\n\nNote\nWhile setting file path as arguments, add \"path\" if there are spaces in file name since java parses space as new arguments.\nBonus\nThis is not required for the exercise.\nRun Exercise02 with other files of the data set as an argument.\nWhat is the meaning of the mean value and the variance of time distance between the peeks?\nHow do signals with low variance in the peak distances look like and how signals with high variance?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/2020/exercise-2/","title":"Exercise 2"},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"body":"Submission deadline: 25.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImages and 2-d Convolution\nIn this exercise, we finally to work with images. It's time to update the file src/main/java/lme/DisplayUtils.java to the newest version.\nThis should provide you the following methods to work with images:\n // Open a file\n public static mt.Image openImage(String path) \n\n // Download and open a file from the internet\n public static mt.Image openImageFromInternet(String url, String filetype) \n\n // Save an image to a file\n public static void saveImage(mt.Image image, String path) \n\n // Show images\n public static void showImage(float[] buffer, String title, int width) \n public static void showImage(float[] buffer, String title, long width, float[] origin, double spacing, boolean replaceWindowWithSameName)\n\n\nThey all work with the class mt.Image so let's create it!\nBefore that, add the following two methods to your Signal class (they are used by the tests of this exercise):\n // Needs: import java.util.Random\n public void addNoise(float mean, float standardDeviation) {\n\tRandom rand = new Random();\n\tfor (int i = 0; i < buffer.length; i++) {\n\t buffer[i] += mean + rand.nextGaussian() * standardDeviation;\n\t}\n }\n\n public void setBuffer(float[] buffer) {\n\tthis.buffer = buffer;\n }\n\nPS: The method addNoise is also useful to test your mean and standardDeviation calculation in exercise 2.\nCreate a long signal and add noise with a specific mean and standardDeviation.\nThe result of your mean and standardDeviation method should be approximatelly the same.\nmt/Image.java\n4 Points\nThe code for this section should go to src/main/java/mt/Image.java\nOur goal is to share as much code with our mt.Signal class. So mt.Image will be a subclass of mt.Signal.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\nimport lme.DisplayUtils;\n\npublic class Image extends Signal {\n\n\n}\n\nmt.Image has five members (apart from the ones inherited by mt.Signal).\n // Dimensions of the image\n protected int width; \n protected int height; \n\n // Same as Signal.minIndex but for X and Y dimension\n protected int minIndexX;\n protected int minIndexY;\n\n // For exercise 4 (no need to do anything with it in exercise 3)\n protected float[] origin = new float[]{ 0, 0 };\n\nAnd two constructors:\n // Create an image with given dimensions\n public Image(int width, int height, String name)\n\n // Create an image with given dimensions and also provide the content\n public Image(int width, int height, String name, float[] pixels)\n\nAs shown in the exercise slides, we will store all the pixels in one array, like we did in Signal.\nThe array should have the size width * height.\nminIndexX,minIndexY should be 0 for normal images.\n\n\nCall the constructors of the super class Signal in the constructors of Image.\nYou can call the constructor of a super class by placing super(...) with the respetive arguments in the first line of the constructor of the subclass.\nThe constructor public Image(int width, int height, String name, float[] pixels) does not need to create its own array (take pixels for buffer).\nBut you can check whether pixels has the correct size.\nLet's also provide some getters!\n // Image dimensions\n public int width()\n public int height()\n\n // Minimum and maximum indices (should work like Signal.minIndex/maxIndex)\n public int minIndexX()\n public int minIndexY()\n public int maxIndexX()\n public int maxIndexY()\n\natIndex and setAtIndex should work like in Signal except that they now have two coordinate indices.\natIndex should return 0.0f if either the x or y index are outside of the image ranges.\n public float atIndex(int x, int y)\n public void setAtIndex(int x, int y, float value) {\n\nRemember how we calculated the indices in the exercise slides. You have to apply that formula in atIndex/setAtIndex.\n\n\nAdd the method show to display the image\n public void show() {\n DisplayUtils.showImage(buffer, name, width(), origin, spacing(), /*Replace window with same name*/true);\n }\n\nOpen the image pacemaker.png in a file src/main/java/exercise/Exercise03 (in the same project as previous exercise):\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage exercises;\n\nimport mt.GaussFilter2d;\nimport mt.Image;\n\npublic class Exercise03 {\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n Image image = lme.DisplayUtils.openImageFromInternet(\"https://mt2-erlangen.github.io/pacemaker.png\", \".png\");\n image.show();\n\n }\n}\n\nThe image is from our open access book.\n\nmt.ImageFilter\n3 Points:\nLike in Exercise 1, we want to be able to convolve our image signal.\nInfact, we will learn a lot of new ways to process images.\nOften, we need to create an output image of same size.\nLet's create an interface (src/main/java/mt/ImageFilter.java) for that, so we only need to implement this once.\npackage mt;\n\npublic interface ImageFilter {\n default mt.Image apply(mt.Image image) {\n Image output = new Image(image.width(), image.height(), image.name() + \" processed with \" + this.name());\n apply(image, output);\n return output;\n }\n\n default void apply(mt.Image input, mt.Image output) {\n throw new RuntimeException(\"Please implement this method!\");\n }\n\n String name();\n}\n\nThe code for the convolution should go to src/main/java/mt/LinearImageFilter.java\nOk. Now the convolution. The class has already a method that we will need later. It uses your sum method.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\npublic class LinearImageFilter extends Image implements ImageFilter {\n\n public void normalize() {\n\tdouble sum = sum();\n\tfor (int i = 0; i < buffer.length; i++) {\n\t buffer[i] /= sum;\n\t}\n }\n}\n\nCreate a constructor for it. Recall how we implemented LinearFilter!\nminIndexX and minIndexY need to be set to $-\\lfloor L_x/2 \\rfloor$ and $-\\lfloor L_y/2 \\rfloor$ when $L_x$ is the\nfilter's width and $L_y$ the filter's height.\n public LinearImageFilter(int width, int height, String name)\n\nConvolution in 2-d works similar to convolution in 1-d.\n$$K_x = \\lfloor L_x/2 \\rfloor$$\n$$K_y = \\lfloor L_y/2 \\rfloor$$\n$$g[x,y] = \\sum_{y'=-K_y}^{+K_y} \\sum_{x'=-K_x}^{+K_x} f[x-x', y-y'] \\cdot h[ x', y' ] $$\n$$g[x,y] = \\sum_{y'=\\text{h.minIndexY}}^{\\text{h.maxIndexY}} \\sum_{x'=\\text{h.minIndexX}}^{\\text{h.maxIndexX}} f[x-x', y-y'] \\cdot h[ x', y' ] $$\nRemember to use atIndex and setAtIndex to get and set the values.\nImplement the convolution in the method apply.\nThe result image was already created by our interface ImageFilter.\n public void apply(Image image, Image result)\n\n\n\nSource: https://github.com/vdumoulin/conv_arithmetic\nNow it's time to test!\nUse the file src/test/java/mt/LinearImageFilterTests.java.\nGauss Filter\n2 Points\nThe code for the Gauss filter should go to src/main/java/mt/GaussFilter2d.java.\nThe Gauss filter is a LinearImageFilter with special coefficients (the filter has the same height and width).\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\npublic class GaussFilter2d extends LinearImageFilter {\n \n}\n\nIt has the following constructor\n public GaussFilter2d(int filterSize, float sigma)\n\nIn the constructor, set the coefficients according to the unormalized 2-d normal distribution with standard deviation $\\sigma$ (sigma).\nMath.exp is the exponetial function. Use setAtIndex: $x$ should run from minIndexX to maxIndexX and $y$ from minIndexY to maxIndexY.\n$$ h[x,y] = \\mathrm{e}^{-\\frac{x^2+y^2}{2 \\sigma^2}}$$\nCall normalize() at the end of the constructor to ensure that all coefficients sum up to one.\nTest your Gauss filter in Exercise03.java.\nUse arbitray values for sigma and filterSize.\nThe Gauss filter will blur your input image clearly if you chose a large value for sigma.\n\nThere is also a unit test file that you can use: src/test/java/mt/GaussFilter2dTests.java\nCalculating with Images\n1 Points\nThe code for this section should go to src/main/java/mt/Image.java.\nImplement the method Image.minus in Image.java that subtracts the current image element-wise with another one and returns the result:\n public Image minus(Image other)\n\nWe use this method to calculate error images.\nYou can implement this with only one loop over the elements of the buffers of the two images.\nDemo\nThis is not required for the exercise!\nPlace the file src/main/java/exercises/Exercise03Demo.java\nin your project folder and run it.\n\nYou should see an interactive demo applying your Gauss filter to a noisy image.\nYou change change the used parameters.\nSubmitting\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nThen, compress your source code folder src to a zip archive (src.zip) and submit it on studOn.\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/2020/exercise-3/","title":"Exercise 3"},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"body":"Submission\nSubmission deadline: 01.06.20 23:55h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImage Transformations\nIn the previous exercises, we built a Signal and Image class for performing basic operations on the \ninput data. We also implemented various filters to process the data and remove noise. \nIn this exercise we will build on top of the image class and implement methods for performing image transformations.\nIn many medical applications there is a need to align two images so that we \ncan combine the information between the images. This can be due to the images coming from \ndifferent modalities like (CT and MRI) or in scenarios were you have an patient data at from \ndifferent time (before and after an surgery) and you want to compare between these two images. \nIn all these scenarios we use image registration bring the different images together.\nIn the below image, two x-ray views (1) and (2) are fused together to obtain the combined view(3)\nwhich produces more information for diagnosis. This is achieved using image registration between view(1) and view\n \nImage Source: Hawkes, David J., et al. \"Registration and display of the combined bone scan and \nradiograph in the diagnosis and management of wrist injuries.\" European journal of nuclear medicine \n18.9 (1991): 752-756. \nOne of the crucial components of image registration is image transformations.\nIn this exercise we will implement basic image transformations. Additionally, we need to implement an \ninterpolation method to find out the image intensity values at the transformed coordinates. \n\nOverview of tasks\n\nWe will implement the following tasks for this exercise.\n\nHelper functions (a. Image origin, b. Interpolation)\nImage Transformation (a. Translation, b. Rotation, c. Scaling)\n\nWe introduce the basic theory about image transformations in theoretical background section.\nPlease read the theory before proceeding since we don't re-introduce everything in the task description. \nTask Description\n\nWe provide the main method for the task with an interactive ImageJ plug-in in the files\nsrc/main/java/exercises/Exercise04.java\nand src/main/java/mt/ImageTransformer.java\n\n0. Getting started\n1 Point\n\n\nFor Exercise 4 we provide a GUI that displays the image with different image transformation options.\n\n\n\nOnce you have all the transformations implemented you should be able to adjust the sliders and perform the desired transformations in an interactive manner.\n\n\nThe transformations requires an origin point about which we perform all the transformation.\n\n\nExtend the Image class with these three methods\n\n\n // store the origin points x,y as \n // a class variable\n public void setOrigin(float x, float y)\n\n // the origin() returns the {x,y} as float \n // array from the stored origin class variable. \n public float[] origin()\n\n // Sets the origin to the center of the image\n public void centerOrigin()\n\n\nTo ensure that everything is running, run the main function.\nWe already set the origin point for you in the file src/main/java/exercises/Exercise04.java\nTo ensure that everything is running, run the main function of Exercise04.\n\n1. Image interpolation\n4 Points\n\n\nSince the image transformations heavily relies on the interpolation, we first implement the interpolation method by extending the Image class with the following method:\n\n\npublic float interpolatedAt(float x, float y) \n\n\nThe method takes in a physical $(x,y)$ coordinate and returns the image intensity at that position.\nWe use bilinear interpolation to find the value at $(x,y)$ (described in the theory).\n\n\nWe can rewrite the interpolation equation using the linear interpolation formula when we want to interpolate between two points $x_1,x_2$ with function value $f(x_1),f(x_2)$ to find out the function value $f(x)$ at $x$.\n\n\n$$ \\frac{f(x) - f(x_1)}{x-x_1} = \\frac{f(x_2) - f(x_1)}{x_2 - x_1} $$\n\n\n\n\nSince we already know the difference $x_2 - x_1$ is either 1.0 if we have a pixel spacing of 1.0 or pixel spacing, we can simplify the above equation as follows:\n\n$$f(x) = f(x_1) + (x-x_1) (f(x_2) - f(x_1))$$\n\n\n\nYou can use the function below to compute linear interpolation between two points $x_1,x_2$ at $x$\n\n // Definition of arguments\n // diff_x_x1 = x - x_1 compute the difference between point x and x_1\n // fx_1 = f(x_1), pixel value at point x_1\n // fx_2 = f(x_2), pixel value at point x_2 \n\n float linearInterpolation(float fx_1, float fx_2, float diff_x_x1) {\n return fx_1 + diff_x_x1 * (fx_1 - fx_2);\n }\n \n\n\n\nWe now have an way to interpolate between two points in 1D. We need to extend this to 2D case such that we can use \nit for interpolating values in our image. An illustration of how this can be done is \nalready given in the theory section.\n\n\nImplementation detail We describe here possible way to implement the interpolation scheme.\n\n\nFind the 4 nearest pixel indices, for the given physical coordinate $(x,y)$. To do, this you have to transform\nthe physical coordinate to the index space of the image.\n\n\nHint: In physical space all the values of $x$ and $y$\nare computed from origin. So we just need to subtract the origin from the coordinates for this correction.\nx -= origin[0]\ny -= origin[1]\n\n\n\nPixel spacing also alters the physical coordinates and needs to be corrected for. \nThis can be done using just by dividing each coordinate by the pixel spacing.\nx /= spacing;\ny /= spacing\n\n\n\nHint: Since each pixel is a unit square you can round up and down each coordinate ($x$ and $y$) separately \nto get the 4 nearest pixels coordinates.\n\n\nInterpolate along an axis (here we choose the x-axis) initially using the linear interpolation \nfunction to obtain intermediate points.\n\n\nNow interpolate along the intermediate points (i.e you are interpolating along y-axis)\n\n\nNote: Take care of image origin and pixel spacing for the input coordinates before you perform any of the steps.\nAlso, always use atIndex and setIndex for accessing the image values. \nThis ensures that we handle the values at boundary correctly.\n\n\n\n\nExample:\nHere we look at a single point to understand how to implement our algorithm\n\n\nIf we have an input $(x,y) = (0.4,0.4)$, then the 4 nearest pixel coordinates are $(0,0)$,$(1,0),(1,1),(0,1)$\n\n\nInterpolating the values between the points $a = (0,0)$, $b = (1,0)$, find the intermediate \nvalue at point $I_1 = (0.4,0)$.\n\n\nSimilarly interpolate between $c = (0,1)$ and $d = (1,1)$ to find the intermediate value at point $I_2 = (0.4,1)$.\n\n\nNow we can just use the values at the intermediate points $I_1 = (0.4,0)$ and $I_2 = (0.4,1)$ and \nperform a linear interpolation in the y direction to obtain the final result at $(0.4,0.4)$.\n\n\n\n\n2. Image Transformation\n5 Points\nNow we can start with the implementation of ImageTransformer class.\n\nThe class consists of the following member functions for translation\n\n// Transformation parameters\npublic float shiftX; // tx\npublic float shiftY; // ty\npublic float rotation; // theta\npublic float scale; // s\n\n\n\nAlso use the interface ImageFilter abstract class which you have implemented in the previous exercises. \nThis can be done using implements keyword.\n\n\nAdd the method apply(Image input,Image output) which takes in two variables input and \noutput of Image class type. The input variable provides the input image to our transformer class. \nThe output variable is where the transformed image is stored.\n\n\nConsider each pixel in the image with index $(i,j)$. When we access an image pixel we get \nthe pixel intensity stored at the location $(i,j)$.\n\n\nHere $(i,j)$ represents the image coordinates $(x,y)$ and the pixel value at $(i,j)$ represents $f(x,y)$.\n\n\nWe want to transform $(x,y) \\to (x',y')$ and find the pixel value at the new location for a \ngiven set of input transformation parameters $t_x,t_y,\\theta,s$ to transform the input image coordinate $(x,y)$.\n\n\nLet us go over a possible approach to implement the apply method which \nimplements (translation,rotation and scaling). In addition, once we have the transformed coordinates $(x',y')$ we \ninterpolate the value at this coordinate to set the output value of the new image.\n\n\nWe can implement the transformations and interpolation using the equations defined \nin the theory section. \n\n\nHowever, from the implementation perspective it is much easier to ask what will be my output image value \nat the current position $(x',y')$ for the given transformations parameters.\n\n\nFor this we need to find the input coordinate $(x,y)$ for the given transformation parameters.\nThis mapping from $(x',y') \\to (x,y)$ is known as the inverse transformation.\n\n\nJust to recap our current aim is to iterate over the output image along each \npixel $(i,j)$ (also referred as $(x',y')$) and find the inverse transformation (x,y).\nOnce we find $(x,y)$ we can just interpolate the values in the input image at $(x,y)$ and\nset it to the output image value at (x',y').\n\n\nAn example code to accomplish this looks like below:\n\n\n// We need to compute (x,y) from (x',y')\n// We use xPrime,yPrime in the code to indicate (x',y')\n// Interpolate the values at (x,y) from the input image to get\nfloat pixelValue = input.interpolatedAt(x,y);\n\n// Set your result at the current output pixel (x',y')\noutput.setAtIndex(xPrime, yPrime, pixelValue);\n\n\n\n\nThe inverse transformations can be computed using the following equations.\n\n\nTranslation\n\n$x = x' - t_x$\n$y = y' - t_y$ \n\n\n\nRotation\n\n$x= x' \\cos\\theta + y' \\sin\\theta$\n$y= - x \\sin\\theta + y' \\cos\\theta$\n\n\n\nScaling\n\n$x= \\frac{x'}{s}$\n$y= \\frac{y'}{s}$\n\n\n\nImplementation detail Now you can directly use the above equations to implement translation, rotation and scaling.\nThe entire apply method for the ImageTransformer class can be implemented as follows:\n\n\nIterate over each pixel in the output image (although they are just the same as input initially).\n\n\nAt each pixel the index $(i,j)$ represents our coordinates $(x',y')$ of the output image\n\n\nApply the transformations using the equations described above to find $(x,y)$\n\n\nNow set the output image value at $(i,j)$ (also referred as (x',y')) from the interpolated values at $(x,y)$ \nfrom the input image.\n\n\nUse the setIndex() for setting the values of the output image and atIndex() for getting the values \nfrom input image.\n\n\nIn the above formulation we assume that we have pixel spacing of $spacing = 1.0$ and the \nimage origin at $(x_0, y_0) = (0,0)$.\n\n\nYou can extend this to work for different values of pixel spacing and origin.\n\n\nHint: Think of pixel spacing as a scaling and origin as a translation transformation. \n(apply both spacing and origin transformation to the input coordinates $(x,y)$ as $(x * px , y * py) + (x_0,y_0))$ \n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/2020/exercise-4/","title":"Exercise 4"},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"body":"Submission\nSubmission deadline: 08.06.20 23:55h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nQuanitfying Errors\n3 Points\nIn Exercise03, we have seen that we can use linear low-pass filters, like the Gauss filter, to reduce \nthe amount of noise in images. Let's test that!\nAdd two static methods to the Image class:\npublic static float meanSquaredError(Image a, Image b);\npublic static float psnr(Image a, Image b, float maxValue); // maxValue is 255 for PNG images\n\n\n$$ \\mathrm{MSE}_{ab}= \\frac{1}{M} \\sum _{i=0}^{M} \\left(a_i - b_i\\right)^2 $$\n$$ \\mathrm{PSNR_{ab}} = 20\\cdot \\log_{10}(\\mathtt{maxPossibleValue}) - 10\\cdot \\log_{10}(\\mathrm{MSE}_{ab}) $$\n\nStatic also means that you will use them like float mse = Image.meanSquaredError(imageA, imageB);.\nOpen a test image and add some noise using addNoise in exercise.Exercise05 (src/main/java/exercise/Exercise05).\n (new ij.ImageJ()).exitWhenQuitting(true);\n Image original = lme.DisplayUtils.openImageFromInternet(\"https://mt2-erlangen.github.io/shepp_logan.png\", \".png\");\n original.setName(\"Original\");\n \n Image noise = new Image(original.width(), original.height(), \"Noise\");\n noise.addNoise(0.f, 10.f);\n\n Image noisyImage = original.minus(noise); // You might also implement your own `plus` ;-)\n\nApply a Gauss filter (choose a good filterSize and sigma) on the noise image and compare the result with the original image.\nCan the error be reduced in comparision to the unfiltered noisy image? Also take a look on the error images that you can\ncalculate using your minus method of the class Image.\n\nHint: You can use a for-loop to try out different values for sigma.\nHint: You do not need to submit written answers to the questions in the text. Just do the correponding experiments!\n\nNon-Linear Filters\n3 Points\nA quality criterion for medical images are sharp edges.\nHowever, though the Gauss filter reduces the noise it also blurs out those edges.\nIn this exercise, we try to mitigate that problem using non-linear filters.\nNon-linear filters calculate similar to a convolution each pixel value in the output from a neighborhood of the\ninput image. Remember the sliding window from exercise 3? Non-linear filters do exactly the same.\n\nSource: https://github.com/vdumoulin/conv_arithmetic\nCreate a class mt.NonLinearFilter in the file src/main/java/mt/NonLinearFilter.java:\n// Your name here <your idm>\n// Your team partner here <partner's idm>\npackage mt;\n\nimport lme.WeightingFunction2d;\nimport lme.NeighborhoodReductionFunction;\n\npublic class NonLinearFilter implements ImageFilter {\n\n // Name of the filter\n protected String name; \n // Size of the neighborhood, 3 would mean a 3x3 neighborhood\n protected int filterSize;\n // Calculates a weight for each neighbor\n protected WeightingFunction2d weightingFunction = (centerValue,neighborValue,x,y) -> 1.f;\n // Calculates output value from neighbors and weights\n protected lme.NeighborhoodReductionFunction reductionFunction;\n\n public NonLinearFilter(String name, int filterSize) {\n this.filterSize = filterSize;\n this.name = name;\n }\n\n @Override\n public String name() {\n return name;\n }\n}\n\nAs you can see, NonLinearFilter uses two interfaces. You can copy them into your src/main/java/lme/ folder.\n// in file `src/main/java/lme/WeightingFunction2d.java`\npackage lme;\n\n@FunctionalInterface // Does nothing. But Eclipse is happier when it's there.\npublic interface WeightingFunction2d {\n // Assigns a neighbor (shiftX, shiftY) a weight depending on its value and the value of the pixel in the middle of the neighborhood\n float getWeight(float centerValue, float neighborValue, int shiftX, int shiftY);\n}\n\nand\n// in file `src/main/java/lme/NeighborhoodReductionFunction.java`\npackage lme;\n\n@FunctionalInterface\npublic interface NeighborhoodReductionFunction {\n // Calculates the output pixels from the values of the neighborhood pixels and their weight\n float reduce(float[] values, float[] weights);\n}\n\nImplement the method apply for NonLinearFilter.\n @Override\n public void apply(Image input, Image result)\n\nThe method should calculate each output pixel from a neighborhood. So\n\nCreate an array to hold the values of the neighborhood pixels. How many neighborhood pixels are there?\nLoop over each output pixel\n\nFill the array of neighborhood pixels with values from the input image (needs two inner loops)\nUse this.reductionFunction.reduce to determine the value of the output pixel. You can use null for the second parameter for now (we will implement weights later).\nSave the value to the output image (using setAtIndex).\n\n\n\nOverall, the method should look very similar to your LinearImageFilter.apply method.\nTo test your method, implement a MedianFilter in a file src/main/mt/MedianFilter.java as a subclass of NonLinearFilter.\n// Your name here\n// Team partner's name here\npackage mt;\n\nimport java.util.Arrays;\n\npublic class MedianFilter extends NonLinearFilter {\n\tpublic MedianFilter(int filterSize) {\n // TODO:\n super(...);\n reductionFunction = ...;\n\t}\n}\n\nThe MedianFilter is a LinearImageFilter with\nreductionFunction (values, weights) -> { Arrays.sort(values); return values[values.length / 2]; }\n(it sorts the values and takes the one in the middle).\nAll you need to do is to call the super constructor and set reductionFunction.\nDoes the median filter also reduce the noise in the image?\nBilateral Filter\n2 Points\nNext, we will implement the BilateralFilter.\npackage mt;\n\npublic class BilateralFilter extends NonLinearFilter {\n GaussFilter2d gaussFilter;\n\n public BilateralFilter(int filterSize, float spatialSigma, float valueSigma){\n ...\n }\n}\n\nThe bilateral assign a weight to each neightborhood pixel.\nSo modify your NonLinearFilter.apply method that it also creates a weights array and uses weightingFunction.getWeight to\nfill it. reductionFunction should now also be called with the weights array.\nThe bilateral has to parameters $\\sigma_{\\text{value}}$ and $\\sigma_{\\text{spatial}}$.\nFor large values of $\\sigma_{\\text{spatial}}$ the bilateral filter behaves like a Gauss filter.\nInitialize gaussFilter in the constructor. Set weightingFunction so that the weights $w_s$ of the Gauss filter are returned.\nSet reductionFunction. It should multiply each of the values with its weight and then sum the results up.\nYour BilateralFilter should now behave like a Gauss filter. Does it pass the test in GaussFilter2dTests when you\nuse BilateralFilter instead of GaussFilter2d?\nEdge-Preserving Filtering\n2 Points\nTo make our bilateral filter edge preserving, we have to use also $\\sigma_{\\text{value}}$.\nThe value weight $w_v$ is calculated as follows\n$$ w_v = \\exp\\left(-\\frac{\\left(\\mathtt{centerValue}-\\mathtt{value}\\right)^2}{2 \\sigma_{\\text{value}}^2}\\right) $$\nJust multiply with this value $w_v$ in weightingFunction. The total weight of a pixel will then be $w_v \\cdot w_s$.\nNow we have the problem that our weights will no longer add up to one! To solve this problem divide by the sum of weights\nin the reductionFunction.\nCan you reduce the error even more using the bilateral filter? My results look like this.\n\n \n \n \n \n \n \n \n Original\n Noisy\n Gauss filtered\n Bilateral filtered\n \n \n \n \n \n \n \n \n \n Error Unfiltered\n Error Gauss\n Error Bilateral\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/2020/exercise-5/","title":"Exercise 5"},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"body":"Submission deadline: 29.06.20 23:55h\nIn the last exercise, we want to have a look at edge detection and segmentation.\nEdge Detection\n 7 Points\nOpen a test image in a new file src/main/java/exercise/Exercise06.java.\n// Your name\n// Team parnter name\npackage exercises;\n\nimport lme.DisplayUtils;\nimport mt.LinearImageFilter;\n\npublic class Exercise06 {\n public static void main(String[] args) {\n\t(new ij.ImageJ()).exitWhenQuitting(true);\n\tmt.Image cells = lme.DisplayUtils.openImageFromInternet(\"https://upload.wikimedia.org/wikipedia/commons/8/86/Emphysema_H_and_E.jpg\", \".jpg\");\n\n }\n}\n\nWe will use the Sobel Filter, to estimate the gradient of the image.\nThe Sobel Filter uses two filter kernels. One to estimate the x-component of the gradient and one for the y-component.\n\nCreate two LinearImageFilters with those coeffients. You can use filterX.setBuffer(new float[]{...})\nor setAtIndex to do that.\nFilter the original image with both of them!\n\n \n\t\n\t\n \n \n\tX component of gradient $\\delta_x$\n\tY component of gradient $\\delta_y$\n \n\nYou should now have two intermediate results that can be interpreted as the x-component $\\delta_x$\nand y-component $\\delta_y$of the estimated gradient for each pixel.\nUse those two images to calculate the norm of the gradient for each pixel!\n$$ \\left|\\left| \\nabla I \\right|\\right| =\\left|\\left| \\left(\\delta_x,\\ \\delta_x \\right) \\right|\\right| = \\sqrt{ \\delta_x^2 + \\delta_y^2}$$\n\nFind a good threshold and set all gradient magnitude values to zero that are below this values and all other to 1.f to\nobtain an image like this with a clear segmentation in edge pixels and non-edge pixels.\n\nSegmentation\n 3 Points\n\n Source: https://commons.wikimedia.org/wiki/File:Emphysema_H_and_E.jpg (cc-by-2.0)\nFor histologic examinations colored subtances called stains are used to enhance the constrast\nof different portions of the tissue.\nUse a suitable threshold to segment the individual sites with high contrast (0 background, 1 contrasted cells).\nYou can use the following method to overlay your segmentation with the original image.\n // In lme.DisplayUtils\n public static void showSegmentedCells(mt.Image original, mt.Image segmented) \n // You may also try `showSegmentedCells(cells, segmentation, true);` with the newest version of DisplayUtils\n\n\nImproving your Segmentation\nThis is optional and not required for the exercise.\nYou might want to go directly to the evaluation of this year's exercises:\nhttps://forms.gle/2pbmuWtmeTtaVcKL7\nYou may notice that by just choosing a threshold you may not be able to separate each individual structure.\n\nYou can try out some operations from the menu Process > Binary while you have your 0/1 segmentation focused.\nYou have to convert to 8-bit first. E.g.\n\n\n\nImage > Type > 8-bit\nProcess > Binary > Watershed\n\n\nOr \"click\" on menu items in your program code.\n segmentation.show();\n IJ.run(\"8-bit\");\n IJ.run(\"Watershed\");\n DisplayUtils.showSegmentedCells(cells, segmentation);\n\n\nEvaluation\nWe redesigned the exercises from scratch for this semester.\nTherefore, some of the exercises might have been difficult to understand or too much work. \nWe are glad for your feedback to help future semesters' students😊:\nhttps://forms.gle/2pbmuWtmeTtaVcKL7\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/2020/exercise-6/","title":"Exercise 6"},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"body":"Theoretical background\nImage Transformation\nOverview of image transformations\n\nTranslation\nRigid or Euclidean (Rotation, translation)\nSimilarity (Rotation, translation, scaling)\nAffine\nProjective\n\nConsider a point $\\mathbf{x}=(x,y)$ in the 2D space. Then\nwe can define translation, rotation and scaling\nusing the following equations which maps the points from $\\mathbf{x} \\to \\mathbf{x}'$ where $\\mathbf{x}' = (x',y)'$ is the new transformed coordinates.\nTranslation\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = x + t_x$\n$y' = y + t_y$.\n\nThis can also be written in vector notation as follows:\n\n$\\mathbf{x}' = \\mathbf{x} + \\mathbf{t}$ where $\\mathbf{t} = (t_x, t_y)$\n\n\nRotation\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = x cos\\theta + y sin\\theta$\n$y' = -x sin\\theta + y cos\\theta$\n\n\n\nScaling\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = sx$\n$y' = sy$.\n\n\n\n\nWe can also chain the different transformations and compute the transformed coordinate using a single equation\n$$x' = s (x \\cos\\theta + y \\sin\\theta ) + t_x$$\n$$y' = s(-x \\sin\\theta + y \\cos\\theta) + t_y$$\n\n\nIllustration of different transformation\n\nImage Source : Szeliski, Richard. Computer vision: algorithms and applications \n\nImage Source : Szeliski, Richard. Computer vision: algorithms and applications \nFor more details about image transformations, you can \nalso check out the computer vision book by Richard Szeliski. \nA free pdf is available on the website.\nImage interpolation\nLet us consider an example image\ntransformation. Initially we have an unit square with its left corner placed at the origin (0,0). Assume that we have image intensity values at the\ncorners of the unit square at a = (0,0), b =(0,1),\nc = (1,1), d = (0,1).\nWe apply a small translation $\\mathbf{t} = (0.5,0.5)$ to the square. As you can see in the image, now our left corner point is at $a' = (0.5,0.5)$.\nSince we don't have the value at this point we are forced to approximate the value from the information available to us. This is the main\nreason for implementing image interpolation function as image transformations can always lead to coordinates for which we don't have any value and we approximate the value using the neighbourhood information.\n\nThe way in which we use the neighbouring information governs the quality of the interpolated image. The different types of interpolation are as follows:\n\nNearest neighbour\nBilinear\nBi-cubic\n\nIllustration of different types of interpolation\nThe image below shows how the different types of interpolation works. The discrete points are the places where we know the function value and\nthe lines connecting these points represents the interpolated function values.\n\nImage Source : Wikipedia\nWe will implement only bilinear interpolation\nfor our Image class.\nLets dive a bit deeper into the bilinear\ninterpolation and look at the how the values are interpolated using this method.\nBilinear interpolation\n\nImage Source : Wikipedia\nConsider the above image where the red dots ($Q_{ij}$) indicate the discrete points where we know the function value. We want to approximate the function value at point $P$.\nConsider the points(red dots) in the above image:\n$$Q_{11} = (x_1,y_1), Q_{21} = (x_2,y_1)$$\n$$ Q_{12} = (x_1,y_2), Q_{22} = (x_2,y_2)$$\nAssume that each of these points $Q_{ij}$ corresponds to an image pixel with intensity values.\nNow we need to find the image intensity value at point $P= (x,y)$ which is in between the points $Q_{ij}$\nLet us consider one coordinate at\na time (i.e. $x_i$ or $y_i$) for interpolation.\nHere we intially interpolate along the $x$-axis.\nSo now our aim is to find values at $P(x,y_i)$.\n(i.e. find intermediat values $R_i (x,y_i)$. We have two values of $y_i$ so we can find two intermediate values.)\nWe can obtain two such values by interpolating along\n$Q_{11}, Q_{21}$ and find out the intermediate value as $R_1$ and between $Q_{12}, Q_{22}$ and find out the intermediate value $R_2$.Look at the image of how we just interpolate along the line.\nWe can directly use the linear interpolation equation to find out the values of $f(R_1)$ and $f(R_2)$\n$$ \\frac{f(x) - f(x_1)}{x-x_1} = \\frac{f(x_2) - f(x_1)}{x_2 - x_1} $$\nOnce we have the values at $R_1 = (x,y_1)$ and $R_2 = (x,y_2)$ we can again use the same linear interpolation formula along the $y$-axis and find the function value $f(P)$ at $P=(x,y)$.\nThis way we can interpolate(approximate) any values (x,y) if we know the neighbouring values. However when we actually implement the method we also need to find out the neighbouring values on our own as they are not provided.\n","id":"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/","title":"Image transformation theory"},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"body":"\n\nOn Windows, download the latest Java version (14.1) from Oracle.\nOn Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.\nAt least Java 11 is required.\n\n\nInstall Eclipse from https://www.eclipse.org/downloads/\n\n\nOpen Eclipse \n\n\n\nImport...\n\n\n\nExisting Gradle Project...\n\n\n\nChose path of the downloaded project and click Next\n\n\n\nGrab a coffee while it's downloading ImageJ\n\n\n\nTry to run Exercise01\n\n\n\nYou are seeing red squiggles, you found a bug in a Eclipse plugin. Upgrade it in the Eclipse Marketplace! \n\n\n\nSearch for gradle build! Then, click on the Installed button of \"Buildship Gradle Integration.\n\n\n\n... and click on Update! This should solve the bug after a restart.\n\n\n\nYou should now see ImageJ when you start Exercise01.\n\n\n\nIf you're still facing problems: please also check whether a valid Java Runtime Enviroment was found by right-clicking on the project folder\n(if it still has red crosses). Select Properties -> Java Build Path. Sometimes Eclipse does not find your Java\ninstallation. You can select it there.\n\n\n\nBack to exercise 01\n\n\n","id":"https://mt2-erlangen.github.io/archive/2020/import_eclipse/","title":"Import a Gradle project with Eclipse"},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"body":"\n\nOn Windows, download the latest Java version (14.1) from Oracle.\nOn Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.\nAt least Java 11 is required.\n\n\nYou can get IntelliJ from here. There's a free community edition and you can also \nunlock the Ultimate Edition when applying with your FAU email adress here.\n\n\nStart IntelliJ and select \"Open or Import\"\n\n\n\n\n\nSelect the downloaded folder\n\n\n\nWait until all dependencies are downloaded\n\n\n\nBack to exercise 01\n","id":"https://mt2-erlangen.github.io/archive/2020/import_intellij/","title":"Import a Gradle project with IntelliJ"},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"body":"Contents\n\nIntroduction Tafelübung 9. Juni\nVolumes\nProjection Tafelübung 16. Juni\nSinogram\nBackprojection and Reconstruction Tafelübung 23. Juni\nIterative Reconstruction and Conclusion\n\nIntroduction\nDuring this semester we will learn how computer tomography (CT) reconstruction algorithms work.\nYour first task is to find out more about CT and write an introduction for your project report.\n\nFind an informative title for your project report. \"Project Report\" and \"Introduction\" are not good titles.\nWhat is computer tomography?\nWhat is the problem it tries to solve? When and how was it first introduced?\nWhat kind of electromagnetic radition is used to aquire the images?\nHow did modern CT devices improve over their predecessors? What is the typical spatial resolution of a state-of-the-art CT scanner?\nWhat are advantages and disadvantages of CT in comparison with other modalities. Include at least two advatages and\ntwo disadvantages.\nGive a short overview of the contents of the following sections of your project report.\nProof all your statements with references. You should use at least four distinct sources in your introduction that are\nnot webpages.\n\nThe introduction should not be longer than one page and but at least half a page. \nYour introduction and conclusion should not contain any images.\nPlease have a look on our checklist for a good project report.\n\n\nNext task\n","id":"https://mt2-erlangen.github.io/archive/2020/introduction/","title":"Project Work 1 – Introduction"},"https://mt2-erlangen.github.io/archive/2020/projection/":{"body":"Projections\nTo understand how we can reconstruct a volume from X-ray images, we will first go through the process of how these X-ray images\nwere acquired from a physical volume.\nIn your project report you should...\n\nexplain the reader the physical process of X-ray attenuation and its material dependance.\nWhat materials in the human body attenuate more X-rays than others?\nHow is this represented in a CT reconstruction? Or in other words: what quantity does a CT reconstruction actually show?\nWhich kind of tissues appear therefore lighter and which darker?\nexplain the fundamental theorem hat describes this process (X-ray attenuation). Give a formula!\nExplain all the symbols that you use in the formula.\nprove your explanations with references, also provide the source of the formula.\n\nIn this project work, we will make some simplifying assumptions on the acquisition geometry.\nI made a drawing of the path of a single X-ray through a slice of our volume.\nSince this ray crosses the origin of our coordinate system we call it the principal ray.\n\nWhat are the coordinates $\\vec{x}_{P}$ of a point $P$ on the line of the principal ray in dependency of the angle $\\theta$ ($\\alpha$ in drawing) and the distance\nfrom origin $r$?\nIn reality, not all X-rays cross the coordinate origin. \nWhat are the coordinates $\\vec{x}_{P'}$ of a point $P'$ that is on a ray that hits the detector at coordinate $s$ in depedency of $r$ and $\\theta$?\nWe assume parallel rays.\nHint: What vector do you have to add to $P$ to get to $P'$?\n\nUnfortunally, the figure was written on paper and you shouldn't use hand drawn figures in the project report (as you can see they look ugly).\nPlease create one or two plots on the computer that are explaining your derived the ray equations to the reader of the project\nreport. Decide which information is important for the reader to understand your text.\n\nHow does the described situation differ from the actual acquisition geometry of modern CT scanners?\nWhat are the reasons for that? Could our simplified situation be implemented in reality?\n\n\n\nAfter Implementation: Describe briefly your implementation of the projection.\nDo not refer any Java classes or variable names!\nGive a formula for how you calculated the different projection angles.\nGive a formula for how you calculated the projection result for each ray.\nWhat physical effects were neglected in our simulation but are present in reality?\nName at least three non-idealities of real systems.\n\nThis part of the project work should be not longer than 1.5 pages.\nAfter some remarks from you: 2 pages are also ok..\nImplementation\nWe already have an volume class which can store the stack of image slices. Additionally, we also want\nto store the projection images (referred as sinograms) for these stack of image slices. For this create\ncreate a class mt.Projector in a file src/main/java/mt/Projector.java, which can hold both volume slices\nand the sinograms.\n// Your name here <your idm>\npackage mt;\n\nimport java.util.stream.IntStream;\n\npublic class Projector {\n // Our volume\n private mt.Volume volume;\n // Our sinogram\n private mt.Volume sinogram;\n\n}\n\nImlement a constructor for this class.\nIt should call this.volume.centerOrigin() and set the origin of each sinogram slice to 0.0f, -sinogram.physicalHeight() * 0.5f so we use the same coordinate\nsystems as in our drawings (it might be handy to set the origin of sinogram to 0.0f, -sinogram.physicalHeight() * 0.5f, -sinogram.physicalDepth() * 0.5f, requires a Volume.setOrigin method)\n public Projector(mt.Volume projectionVolume, mt.Volume sinogram) {\n ... // Implementation here\n assert sinogram.depth() == volume.depth() : \"Should have same amount of slices\";\n }\n\nConstructor and Setters/Getters:\n public void setSinogram(Volume sinogram)\n public Volume sinogram()\n\n public void setVolume(Volume volume)\n public Volume volume()\n\n public int numAngles() // == sinogram.width()\n\nWe assume that we aquire $N$ projections at $N$ different angles $\\theta$.\nAll angles should have the same distance from each other and divide $2\\cdot \\pi$ in $N$ equal parts (we always use radians for angles).\nImplement a method which computes angle value of $n^{th}$ angle index. We want to use the method such that at $n=0$ our angle value should return $\\theta=0$, at $n=1$ returns $\\theta= \\frac{2\\cdot \\pi}{N}$, and so on. Think of a general formula to compute the $n^{th}$ angle and describe it briefly in the description of your implmentation.\nUse this formula to implement the following method:\n // In mt.Projector\n public float getNthAngle(int angleIdx)\n\nNow, recall the formula you derived for the position of point $P'$ in the previous section.\nWe could directly use those coordinates $\\vec{x}$ to calculate the integral in Lambert-Beer's law for a ray with angle $\\theta$ and shift $s$ over a slice $\\mu$ on our computers:\n$$ I_{\\textrm{mono}} = I_{0} \\cdot \\exp\\left(-\\intop\\mu\\left(\\vec{x}\\right)\\textrm{d}\\vec{x}\\right) = I_{0} \\cdot \\exp\\left(-\\intop_{-R}^{R}\\mu\\left(r,\\theta, s\\right)\\textrm{d}r\\right)$$\n$R$ is the radius of the circle circumscribing our rectangular slice. You can see it in the drawing.\nThe path integral goes along the path marked in yellow in the drawings.\nWe are only interested in the value of the line integral\n$$ P(\\theta, s) = \\intop_{-R}^{R}\\mu\\left(r, s, \\theta\\right)\\textrm{d}r $$\nand we have to replace the integral by a sum (computers cannot calculate integrals directly)\n$$ P(\\theta, s) = \\sum_{r=-R}^{R}\\mu\\left(r,\\theta, s\\right) \\cdot \\mathtt{spacing}$$\nCalculate this sum for a fixed $s$ and $\\theta$ on a slice of our volume!\nYou can use volumeSlice.interpolatedAt(x,y) to deterime $\\mu(\\vec{x})$ and access values of our slice.\n // in mt.Projector\n public float projectRay(mt.Image volumeSlice, float s, float theta)\n\nWe have now calculated one value of one of the gray rays on our slice which translates to one point in our sinogram.\n\nNext we want to call this function for every ray and every pixel of our sinogram in the following method:\n // in mt.Projector\n public void projectSlice(int sliceIdx) {\n\nTo do that ...\n\n\nGet the slice sliceIdx from this.volume using getSlice\n\nThis is a slice of our volume with coordinates $x$ and $y$.\n$x$ runs from left to right\n$y$ runs from top to bottom\n\n\n\nGet the sinogram for that slice sliceIdx from this.sinogramm using getSlice\n\nThis is a slice of our sinogram with physical coordinates $s$ and $\\theta$.\n$\\theta$ runs from left to right\n$s$ runs from top to bottom\n\n\n\nIterate over each pixel of the sinogram. I would use angleIdx, sIndex as a loop variables.\n\nCalculate the actual value of s from sIndex.\nCalculate theata from angleIndex by calling the function getNthAngle\nCall projectRay with s and theta\nSave the result to sinogram at positions angleIndex and sIndex\n\n\n\nHint Computing s from sIndex is just using the physical coordinates and shifting the origin of $s$ axis in\nthe sinogram to the center.\nThis can be done by muliplying sIndex with sinogram.spacing() (pixel size of the detector) and adding\nsinogram.origin()[1] (== -sinogram.physicalHeight() * 0.5f).\nWe recommend you to test your algorithm using a simple image.\nChoose a good size for the sinogram to capture the whole image (e.g. height == volume.height).\nFor simplicity, you do not need to change the spacing of the volume or the sinogram.\n\n \n \n \n\n \n Simple test slice\n Sinogram of that slice\n\n\nI used a high number of 500 angles to get a near square image.\nWhen you are using less angles the width of your sinogram will be smaller.\nUse less angles to compute the results faster.\nYou may also apply projectSlice on all slices and display the sinogram.\nCtrl+Shift+H should reveal a rotating torso when using one the Cancer Archive scans:\n\n \n \nOr of the test image above\n\n \n \nPrevious section\nNext section\n","id":"https://mt2-erlangen.github.io/archive/2020/projection/","title":"Project Work 3 – Projection"},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"body":"Iterative Reconstruction\nUsing backprojection, we could achieve a blurry reconstruction result.\nThe Filtered Backprojection algorithm solves this problem by applying a filtering step before backprojection.\nFor the project work, we will take a different approach.\nIn the last section, you measured the error between your reconstruction and the ground truth volume.\nHowever, this is only possible when doing a simulation and not when reconstructing an unknown real object.\nWhat we can do instead is meassuring the error in the projection domain by simply projecting the reconstruction!\nImplement the following method to use with our reconstructionProjector:\n // In mt/Projector.java\n public void reconstructIteratively(Image meassuredProjection, int sliceIdx, int numIterations)\n\nIt should\n\ncall projectSlice on volume to obtain a projection of our reconstruction\ncalculate an error image subtracting singogram.getSlice(sliceIdx) from meassuredProjection\nreplace the current slice of singogram by our error image\ncall backprojectSlice with the current sliceIdx\nrepeat all this for numIterations iterations\n\n\nSo we're now doing an reconstruction of the error sinogram and adding it to our blurry image.\nDoes this reduce our error?\nOur reconstruction algorithm is now finished. But it operates only on 2-d slices.\nCreate 3-d versions of projectSlice, backprojectSlice and reconstructIteratively:\n public void project()\n public void backproject()\n public void reconstructIteratively(Volume measuredProjections, int numIterations)\n\nAll they should do is calling their 2-d version for each slice.\nYou should now be able to reconstruct volumes.\nHint: You can use the following construct instead of a for-loop to enable multi-threaded calculation.\n // You have to replace `var` by `java.util.concurrent.atomic.AtomicInteger` when using Java 1.8\n var progress = new java.util.concurrent.atomic.AtomicInteger(0);\n IntStream.range(0, sinogram.depth()).parallel().forEach(z -> {\n System.out.println(\"Progess: \" + (int) (progress.incrementAndGet() * 100.0 / (double) sinogram.depth()) + \" %\");\n //Do stuff here for slice z\n ...\n });\n\nProject Report\nFor the project, describe how your iterative reconstruction algorithm works. You should not mention implementation details\nlike variable or function names. Compare it with the Filtered Backprojection algorithm! It's not necessary to explain \nFiltered Backprojection Algorithm in detail. Just highlight the main difference.\nTest your reconstruction algorithm on a slice of a CT reconstruction of the Cancer Imaging Archive.\nMeasure the error of the reconstructed slices after each iteration (so call reconstructIteratively with numIterations == 1).\nInclude a figure showing this error in dependence of the iteration number in the project report.\nInclude images comparing ground truth, the backprojected slice and the result after a few iterations.\nComment on the error and the images in your text.\nDoes the result of the iterative reconstruction look better than solely using backprojection?\nThis part of the project report should be no longer than 1.5 pages.\nConclusion\nIn the last part, summarize want you have implemented and explained in your project report.\nReview the shortcommings of your simplified approach and how they could be mitigated in future.\nDraw a conclusion on your work!\nThis part of the project work should be about a quarter page long and should contain no images.\nSubmission\nSubmit your project report as a PDF and your entire project folder of your code until August 16 23:55h.\nYour project must compile as a whole!\nMake sure that you had a last look at our checklist.\nEvaluation\nWe hope you had a fun project work!\nYou can help us to improve the instructions for next year!\nPrevious section\n","id":"https://mt2-erlangen.github.io/archive/2020/reconstruction/","title":"Project Work 6 – Iterative Reconstruction and Conclusion"},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"body":"Set Program Arguments in Eclipse\nGo to Run Configurations...\n\nCreate a New launch configuration with main class exercises.Exercise02\n\nSet the arguments with the file name in quotes: \"path to your data set file\" (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat). Don't forget the quotes!\n\nClick Run!\n","id":"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/","title":"Set Program Arguments in Eclipse"},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"body":"Set Program Arguments in IntelliJ\nSelect Run... in the menu Run.\n\nSelect Edit configurations...\n\nFill in the form with main class exercises.Exercise02 and your file name of the file that you want to open (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat) as programm arguments in quotes!\n\n","id":"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/","title":"Set Program Arguments in IntelliJ"},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"body":"Sinogram\n\nNow, you should be able to generate sinograms from volume slice.\nGenerate two sinograms from two volume slices:\n\n\nOne sinogram from a simple test image. You can use for instance a white circle as I was doing in the last section.\n\n\nOne sinogram from a real CT reconstruction. You should cite the source of that image. The Cancer Imaging Archive even\nexplains you how to do that.\n\n\nShow both the volume slices and the sinograms.\nExplain to the reader what they are seeing. What is the radon transform?\nCan the radon transform be inverted?\n\n\nDo the sinograms contain some kind of symmetry? What is the reason for that?\nDo we really need a 360° degree scan?\n\n\n\n\nThis section should not be longer than one page.\nPrevious section\nNext section\n","id":"https://mt2-erlangen.github.io/archive/2020/sinogram/","title":"Project Work 4 – Sinogram"},"https://mt2-erlangen.github.io/archive/2020/volume/":{"body":"Getting started\nImportant: You have to work alone on your project work. No team partners allowed anymore 😔!\nCT reconstruction treats the problem of recovering a three-dimensional volume from a set of X-ray images.\nSo we will need two classes that represent our volume and our stack of X-ray projections.\nIt turns out that we can interpret our projections and our volume just as a list of 2-d images.\n\n\n\n\n\nA volume: very much just multiple images stacked one over another\n\n\nCreate a class mt.Volume\n// Your name <your idm>\n// No team partner... So sad 😢!\n\npackage mt;\n\nimport java.util.Arrays;\nimport java.util.stream.IntStream;\n\npublic class Volume {\n // Here we store our images\n protected mt.Image[] slices;\n\n // Dimensions of our volume\n protected int width, height, depth;\n\n // Spacing and origin like for mt.Image\n protected float spacing = 1.f; // spacing is now our voxel size\n protected float[] origin = new float[]{0, 0, 0}; // position of the top-left-bottom corner\n\n // A name for the volume\n protected String name;\n\n}\n\nCreate a constructor. Remember: width, height, depth, name must be set and slices must be created as an array.\nWe need depth images of size width $\\times$ height for the slices.\n public Volume(int width, int height, int depth, String name)\n\nGetters/setters...\n public int width()\n public int height()\n public int depth()\n public float physicalWidth() // width * spacing()\n public float physicalHeight() // height * spacing()\n public float physicalDepth() // depth * spacing()\n\n public mt.Image getSlice(int z) \n public void setSlice(int z, mt.Image slice)\n\n public float spacing()\n public void setSpacing(float spacing) // should also set spacing also for all slices!\n public String name()\n public float[] origin()\n\n // should set origin to (-0.5 physicalWidth, -0.5 physicalHeight, -0.5 physicalDepth) and call centerOrigin on each slice\n public void centerOrigin()\n\nNow comes the interesting part: visualize the volume!\nYou will need to update src/main/java/lme/DisplayUtils.java file and use the following command to visualize the volume.\n public void show() {\n lme.DisplayUtils.showVolume(this);\n }\n\nYou can download a volume from the Cancer Imaging Archive.\nUse one of the following links (it does not matter which CT volume you use).\n\nVolume 1\nVolume 2\nVolume 3\n\nUnzip the folder and drag the whole folder onto a running ImageJ, e.g. by the following code snippet in a file src/main/java/project/Playground.java.\n(if you have problems unzipping the files you might try the official downloader from the website. You need their downloader to open the *.tcia files).\n// This file is only for you to experiment. We will not correct it.\n\npackage project;\n\nimport mt.Volume;\n\nclass Playground {\n\n public static void main(String[] args) {\n // Starts ImageJ\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n // You can now use drag & drop to convert the downloaded folder into a *.tif file\n \n }\n\n}\n\n\nSave it the opened DICOM as a *.tif file (File > Save As > Tiff...).\nThere are more smaller test volumes on studOn.\n\n \n \n\n\n\nOpen the saved tiff file in the main of a file src/main/java/project/Playground.java:\n// This file is only for you to experiment. We will not correct it.\n\npackage project;\n\nimport mt.Volume;\n\nclass Playground {\n\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n \n Volume groundTruth = DisplayUtils.openVolume(\"path/to/file.tif\");\n groundTruth.show();\n \n }\n\n}\n\n\nYou can now scroll through the different slices.\nvia GIPHY\nHere a short summary of handy functions of ImageJ when working with CT images.\n\nCtrl+Shift+C: Brightness and Contrast\nCtrl+Shift+H: Orthogonal Views (view volume from three sides)\nAfter selecting a line: Ctrl+K Line Plot\nCtrl+I: Get patient information of a DICOM\nLook at a 3-d rendering with ClearVolume\n\nPrevious: Introduction \nNext: Forward Projection\n","id":"https://mt2-erlangen.github.io/archive/2020/volume/","title":"Project Work 2 – Volumes"},"https://mt2-erlangen.github.io/archive/WS2021/":{"body":"Project Work\nIntroduction\nVolume\nPost-Processing\nMethod of Otsu's\nStatistical Evaluation\nOutlook and Conclusion\nCurrent Semester\nGo to current semester\n","id":"https://mt2-erlangen.github.io/archive/WS2021/","title":"Wintersemester 2021/2021"},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"body":"We've collected a small checklist for things that you might forget when writing your project work.\nFor a detailed description on how to write the report, refer to the exercise slides.\nThe project report can be in English or German.\nTo achieve full 10 points for writing style...\n\nUse the templates we provide to you. Do not modify the style or the formatting. No ornaments for page numbers!\nUse scientific references to prove your explanantions and to clearly separate your work from the work of others.\nDo not use more than two references that are websites only. If you have to cite a website use the recommended style from\nthe exercise slides.\nCreate a bibliography. Follow the advises from the exercise slides.\nThe bibliography must be sorted (either alphabetically when using the Name/Year citation style or\nby the order you use them in the text when numbering the sources).\nUse the same citation style for all your references.\nDo not use footnotes!\nCheck your spelling: there shouldn't be any obvious spelling errors that can be detected by Word.\nAll symbols in equations should be explained in the text.\nAll equations, figures and tables (tables probably not needed) should be numbered and referenced in the text.\nAll your figures should look professional.\nThey should not be blurry or hand-drawn and images should not have a window border of ImageJ.\nThey should not overlap with the text.\nAll figures should have captions giving a brief description what the figure shows. The caption should be below the figure.\nAll figures should be full-width, not next text. A figure can contain multiple images next to each other.\nA list of figures is not needed.\nDo not use abbreviation without introducing them. The first time you should write computer tomography (CT).\nAfter that, CT is enough.\nLabel all axes in all plots and coordinate systems!\nNever use \"Ich\" or \"I\". In English texts it's acceptable to use \"we\" even though you did all the work alone.\n\nTo obtain all the points for the content of your report\n\nCheck whether you have addressed all the questions in the task description.\nCheck for numbers in the questions. Do you really have two advantages and two disadvanges of using computer tomography?\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/checklist/","title":"Checklist – Project Report"},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"body":"ClearVolume looks like this\n\nYou can integrate it into your development enviroment by adding this\nline to your gradle.build.\nimplementation 'sc.fiji:imglib-clearvolume:1.4.2'\n\nYou need to start ImageJ with (instead of (new ij.ImageJ()).exitWhenQuitting(true);)\n net.image.ImageJ ij = new net.imagej.ImageJ();\n ij.launch();\n\nI guess, this only works if you are running Java 1.8 (at least on my Linux machines)!\n\nWhat will always work, is to install Fiji and\nactivate ClearVolume under Help > Update... > Manage update sites and\nselect \"Clear Volume\"\n\nFiji also has many other PlugIns to view volumes.\nBack to volumes\n","id":"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/","title":"ClearVolume Intregration"},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"body":"Outlook\nSegmentation is a widely used technique in medical image or general image processing. The development of the method still continuous today.\nArtificial intelligence and deep neural networks also influence this process:\n\nName 2 examples of segmentation methods which use AI\nDescribe the methods shortly and give a citation for each method. \nMake an educated guess on how the future of segmentation methods might look like!\n\nThis part of the project should be about half a page long.\nConclusion\nIn the last part, summarize want you have implemented and explained in your project report.\nReview the shortcomings of your approaches and how they could be mitigated in future.\nDraw a conclusion on your work!\nThis part of the project work should be about a quarter page long and should contain no images.\nSubmission\nSubmit your project report as a PDF and your entire project folder of your code until April 11 23:55h via email to: paul.stoewer@fau.de.\nYour project must compile as a whole!\nMake sure that you had a last look at our checklist.\nPrevious: Statistical Evaluation\n","id":"https://mt2-erlangen.github.io/archive/WS2021/conclusion/","title":"Project Work 6 – Outlook and conclusion"},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"body":"Statistical Evaluation\nLets try to evaluate the Method Otsu's with our MIP image and a picture of cultured neuroblastoma cells [1] for comparison:\n\n\n \n \n\n\nMIP Image of Volume1 \nPicture of cells \n\n\n \n\n\n \n \n\n\nMIP Image Segmentation with Otsu Threshold \nCell Image Segmentation with Otsu Threshold \n\n\n\nExplain in your report:\n\nWhat are the limitations of the Method of Otsu's?\n\nUse the example of the MIP Image and the Cell Image.\nInclude and use both histograms in your explanation.\n\n\n\nRoot Mean Square Error\nWe can also try to compare different threshold with a ground truth image to find the best threshold and evaluate our results. We will implement a new method in our PostProcessing class:\n\npublic static float RootMeanSquareError(Image reference, Image result)\n\n\nThe Root Mean Square Error is defined as following: $RMSE(\\theta)=\\sqrt{E((\\hat{\\theta}-\\theta)^2)}$.\nWe want to compare our segmented images. Therefore our estimated value $\\theta$ can be described by our pixel values: $RMSE=\\sqrt{\\frac{1}{n}\\sum_{i=1}^n(\\hat{x}_i-x_i)^2}$, where $\\hat{x_i}$ are the pixel values of our ground truth image and $x_i$ the pixel values from our segmentation.\nWe can now use the following Image as ground truth Image $\\hat{\\theta}$:\n\nDownload\nWe can make use of our Signal Class in our Framework again: Create a Signal with the size of all possible thresholds in your image. Afterwards you can show a graph with the different errors in comparison to the corresponding threshold. Which threshold has the lowest RSME in comparison with our ground truth image $\\hat{\\theta}$?\nDescribe in your report:\n\nWhy do we need statistical evaluation methods in science?\n\nInclude a graph wich shows the relationship between threshold and RSME for all possible grey values.\nDescribe the graph and compare the RSME with the according threshold\nWhat is the big disadvantage of the RSME in our case? \n\n\n\nThe content for this section should be about half a page long. \nPrevious: Method of Otsu's\nNext: Outlook and Conclusion\n","id":"https://mt2-erlangen.github.io/archive/WS2021/evaluation/","title":"Project Work 5 – Statistical Evaluation"},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"body":"Signals and Convolution\nSubmission deadline: 11.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImageJ\nThe image processing program we want to use during this semester is called ImageJ.\nIt was developed at the US National Institutes of Health and is used nowadays especially in research \nfor medical and biological images.\nIf you want to, you can download a stand-alone version of the program here.\nGetting started\nImageJ can also be used as a Java library.\nWe already created a Java project that uses ImageJ.\nYou can download it from https://github.com/mt2-erlangen/exercises-ss2021 and import with the IDE of your choice:\n\nInstructions for Eclipse\nInstructions for IntelliJ\n\nTasks\n\n\nYou should now be able to execute the file src/main/java/exercises/Exercise01.java\n\n\nThe following code is opening the ImageJ main window and exits the running program when the window is closed.\npublic class Exercise01 {\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n }\n}\n\nIntelliJ will only allow to run Exercise01 when there are no errors in the project. You can just out-comment the method lme.Algorithms.convolution1d until you implemented your Signal class.\nSignal.java\n4 Points\nAs a first step, we will implement the class Signal \nwhich should hold a signal of finite length.\nCreate the file src/main/java/mt/Signal.java.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\nimport lme.DisplayUtils;\nimport ij.gui.Plot;\n\npublic class Signal {\n\n}\n\nSignal should have the following members\n protected float[] buffer; // Array to store signal values\n protected String name; // Name of the signal\n protected int minIndex; // Index of first array element (should be 0 for signals)\n\nImplement two constructors for Signal\n public Signal(int length, String name) // Create signal with a certain length (set values later)\n public Signal(float[] buffer, String name) // Create a signal from a provided array\n\nImplement the following getter methods for Signal\n public int size() // Size of the signal\n public float[] buffer() // Get the internal array \n public int minIndex() // Get lowest index of signal (that is stored in buffer)\n public int maxIndex() // Get highest index of signal (that is stored in buffer)\n public String name() // Get the name of the signal\n\nNext, we want to visualize our Signal in the method show. You can use provided function lme.DisplayUtils.showArray.\nTo test it, create a Signal with arbitray values in the main method of Exercise01 and call its show method.\n public void show() {\n DisplayUtils.showArray(this.buffer, this.name, /*start index=*/0, /*distance between values=*/1);\n }\n\nIn our black board exercises, we agreed that we want to continue our signals with zeros where we don't have any values stored.\nIf we access indices of our Signal with values smaller than minIndex() or larger maxIndex() we want to return 0.0f.\nIf a user accesses an index between minIndex() and maxIndex() we want to return the corresponding value stored in our array.\n\nImplement the method atIndex and setAtIndex. Please be aware that minIndex can be smaller than 0 for subclasses of Signal.\nIf setAtIndex is called with an invalid index (smaller than minIndex or greater than maxIndex), it's ok for the program to crash.\nThis should not happen for atIndex.\n public float atIndex(int i)\n public void setAtIndex(int i, float value)\n\nYou can check the correctness of atIndex/setAtIndex with the test testAtIndex in file src/test/java/SignalTests.java.\nLinearFilter.java\n3 Points\nImplement LinearFilter in file src/main/java/LinearFilter.java as a subclass of Signal.\nLinearFilter should work like Signal except its minIndex should be at - floor(coefficients.length/2) as in the exercise slides.\n\nLinearFilter should have a constructor that checks that coefficients is an array of odd size or throws an error otherwise (any error is ok).\n public LinearFilter(float[] coefficients, String name)\n\nand a method that executes the discrete convolution on another Signal input and returns an output of same size.\n public Signal apply(Signal input);\n\nYou should be able to directly use the formula from the exercise slides (f is the input signal, h our filter, $L$ the filter length)\n$$K = \\lfloor L/2 \\rfloor$$\n$$g[k] = \\sum_{\\kappa=-K}^{K} f[k-\\kappa] \\cdot h[ \\kappa ]$$\nor with our minIndex/maxIndex methods for each index $k$ of the output signal.\n$$g[k] = \\sum_{\\kappa=h.\\text{minIndex}}^{h.\\text{maxIndex}} f[k-\\kappa] \\cdot h[\\kappa] $$\nBe sure that you use atIndex to access the values of input and the filter.\n\nYou can test your convolution function with the tests provided in src/test/java/LinearFilterTests.java.\nGood test cases are:\n\n{0,0,1,0,0}: this filter should not change your signal at all\n{0,1,0,0,0}: this filter should move your signal one value to the left\n{0,0,0,1,0}: this filter should move your signal one value to the right\n\nQuestions\n3 Points\nIn this task we want to convolve a test Signal with three different linear filters.\nFilter the signal $f[k]$ Signal(new float[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \"f(k)\")\nwith filters\n\n$h_1[k]$: {1.0f/3 ,1/3.f ,1/3.f},\n$h_2[k]$: {1/5.f, 1/5.f , 1/5.f, 1/5.f, 1/5.f},\n$h_3[k]$: {0.5f, 0, -0.5f}.\n\nSave the images of the input signal and filtered results (recommended filetype: png).\nCreate a PDF document (e.g. with Word or LibreOffice) with those images in which you describe briefly how the filters modified the input signal and why.\nSubmitting\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nThen, compress your source code folder src to a zip archive (src.zip) and submit it and your PDF document via StudOn!\n","id":"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/","title":"Exercise 1"},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"body":"\n\n\n\n\nSubmission deadline: 18.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nStatistical Measures\nIn this exercise, we want to have a look on how we can analyze signals using simple statistical measures.\nWe will use a freely available ECG data set with the goal to distinguish healthy from patients with heart rythm problems.\n\nYou can find the original data set here\nbut we recommend to use a post-processed version available on studOn.\nGradle Build System\nIn Medizintechnik II we use the build system Gradle.\nGradle is especially popular for Android projects since it's easy to add new software dependencies that will be automatically\ndownloaded.\nIn our case, the published data set is saved as Matlab *.mat files.\nTo read those files, an external dependency was already added to our build.gradle file.\n implementation 'us.hebi.matlab.mat:mfl-core:0.5.6'\n\ndoes the magic and automatically downloaded a *.mat file reader.\nIn case, you need to add external software to your own projects you can use this search engine.\nTasks\nLoading one of File of the Data Set\nLoad the file src/main/java/exercises/Exercise02.java (available here (Click the raw button)) into your existing project.\nIt alread contain some code for parsing the program parameters:\n public static void main(String[] args) throws IOException {\n\t(new ij.ImageJ()).exitWhenQuitting(true);\n\n\tSystem.out.println(\"Started with the following arguments:\");\n\tfor (String arg : args) {\n\t System.out.println(arg);\n\t}\n\n\tif (args.length == 1) {\n\t File file = new File(args[0]);\n\t if (file.isFile()) {\n\t\t// Your code here:\n\n\n\t } else {\n\t\t System.err.println(\"Could not find \" + file);\n\t }\n\n\t} else {\n\t System.out.println(\"Wrong argcount: \" + args.length);\n\t System.exit(-1);\n\t}\n\nLaunch Exercise02 with the one of the files of the data set as an argument (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat)!\n\nHow to do that in Eclipse\nHow to do that in IntelliJ\n\nYour program should print now the file name you selected:\n\nRemember to never put file names directly in your code. Your program will then only work on your machine!\nLet's open this file!\nif (file.isFile()) {\n // A file should be opened \n us.hebi.matlab.mat.types.Matrix mat = Mat5.readFromFile(file).getMatrix(0);\n Signal heartSignal = new mt.Signal(mat.getNumElements(), \"Heart Signal\");\n for (int i = 0; i < heartSignal.size(); ++i) {\n\t heartSignal.buffer()[i] = mat.getFloat(i);\n }\n heartSignal.show();\n\n\n} else if (file.isDirectory()) {\n\nYou should now see the signal. However, this plot does not have any labels with physical units attached.\nWe will change that later.\n\nExtension of Signal.java\n4 Points\nTo analyze this and other signals, we will extend our Signal class.\nPlease implement the following methods in Signal.java that calculate some descriptive properties of the signal:\n public float min() //< lowest signal value\n public float max() //< largest signal value\n public float sum() //< sum of all signal values\n public float mean() //< mean value of the signal\n public float variance() //< variance of the signal\n public float stddev() //< standard deviation of the signal\n\nTest the methods in your main function and check whether the calculated values seem plausible\nby looking at your plot and printing the calculated values.\nPhysical Dimensions\n1 Points\nThe code for this section belong to Signal.java\nIn the last exercise, we treated signals as pure sequence of numbers without any physical dimensions.\nBut for medical measurements physical dimensions are important.\nWe want to extend our plot to look like this with the horizontal axis labeled with seconds:\n\nTo do this we will add a new member to our signal that's describing the physical distance between two samples\n protected float spacing = 1.0f; //< Use 1.0f as a default when we don't set the physical distance between points\n\nAdd also a setter and getter method\n public void setSpacing(float spacing) \n public float spacing() \n\nRead in the discription of the data set the sampling frequency of the signal\nand use it to calculate the spacing between two samples. Set this property setSpacing in the main method.\nNext, we want to change show() to regard our spacing and to accept a ij.gui.Plot so that we can set the axis of our plot.\n public void show(Plot plot) {\n\t DisplayUtils.showArray(buffer, plot, /*start of the signal=*/0.f, spacing);\n }\n\nBecause we are lazy, we can still keep the original usage of show()\n public void show() {\n\t DisplayUtils.showArray(buffer, name, , /*start of the signal=*/0.f, spacing);\n }\n\nPlease create an instance of ij.gui.Plot in the main method of Exercise02 with descriptive labels for both axis and use if for heartSignal.show(...).\n\n// Constructs a new Plot with the default options.\nPlot plot = new Plot(\"chosee title here\", \"choose xLabel here\", \"choose yLabel here\")\nheartSignal.show(plot);\n\n//... add here more plotting stuff\n\nplot.show()\n\nDetermine the Heart Frequency\n5 Points\nThe remainder of this exercise will be implemented in Exercise02.java\nCreate a file src/main/java/lme/HeartSignalPeaks.java with following content\npackage lme;\n\nimport java.util.ArrayList;\n\npublic class HeartSignalPeaks {\n\tpublic ArrayList<Double> xValues = new ArrayList<Double>();\n\tpublic ArrayList<Double> yValues = new ArrayList<Double>();\n}\n\nArrayList behave like arrays, except you can add new items to make it longer. You can read more about them here.\nWe now want to find the peaks of the heart signal. We do that by finding local maxima within region that are above a certain\nthreshold (here in blue).\nFind a good value of this threshold so that all peaks are above this value.\nYou may use mean(), max(), min() to calculate it.\nYou can see your threshold by ploting it:\n plot.setColor(\"blue\");\n plot.add(\"lines\", new double[] { 0, /* a high value */10000 }, new double[] { threshold, threshold });\n\n\nImplement the following method that finds all peaks of the signal.\n public static lme.HeartSignalPeaks getPeakPositions(mt.Signal signal, float threshold)\n\nTo determine the signal peaks, one can use normal maximum search over the signal values.\nSave the found maximum value (i.e. signal amplitude) in x(max) and\nthe location of maximum (i.e. the time at which the peak occurs) in y(arg max).\nYou can implement the peak finding method as follows:\n\n\nLoop over the signal and at each index\n\n\nUse boolean variable to determine if the current signal value is above the threshold.\n\n\nIf the previous signal value was above the threshold (i.e boolean value was true), and the current value is below threshold (i.e boolean value is false)\n\n\nAdd the previous signal value as a instance of HeartSignalPeaks (like peaks.xValues and peaks.yValues)\n\n\nThis is a suggested workflow, but feel free to use your own ideas to efficently find the peaks of the signal.\nYou can plot the peaks you have found:\n plot.setColor(\"red\");\n plot.addPoints(peaks.xValues, peaks.yValues, 0);\n\nNext, create a Signal with the difference in time between succesive peaks (import import java.util.ArrayList;). \n\tpublic static mt.Signal calcPeakIntervals(lme.HeartSignalPeaks peaks) {\n\t\tArrayList<Double> peakPositions = peaks.xValues;\n\t\tif (peakPositions.size() > 1) {\n\t\t\tSignal intervals = new mt.Signal(peaks.xValues.size() - 1, \"Peak Intervals\");\n\n\t\t\tfor (int i = 0; i < peakPositions.size() - 1; ++i) {\n\t\t\t\tintervals.buffer()[i] = (float) (peakPositions.get(i + 1) - peakPositions.get(i));\n\t\t\t}\n\t\t\treturn intervals;\n\t\t} else {\n\t\t\treturn new mt.Signal(1, \"No Intervals found\");\n\t\t}\n\t}\n\nYou can use that signal to determine the mean cycle duration (peakIntervals.mean()), the mean heart frequency ((1. / intervals.mean())) and\nbeats per minute (60. * 1. / intervals.mean()). Print those values!\nSummary of tasks\nTo summarize the list of tasks that needs to be implemented to complete this exercise\n\nSet the file path correctly to load the signal into your program (Ensures you can load the signal inside the program)\nAdd labels to the plot, include spacing variable in signal class for visualizing plots in physical dimensions.\nImplement methods to compute statistical measures (like mean, median,...). (Use the formula provied in lecture/exercise slides)\nDetermine the threshold (follow the description provided here)\nFind the peaks (follow the description provided here)\nCalculate intervals between the peaks\n\nNote\nWhile setting file path as arguments, add \"path\" if there are spaces in file name since java parses space as new arguments.\nBonus\nThis is not required for the exercise.\nRun Exercise02 with other files of the data set as an argument.\nWhat is the meaning of the mean value and the variance of time distance between the peeks?\nHow do signals with low variance in the peak distances look like and how signals with high variance?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/","title":"Exercise 2"},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"body":"Submission deadline: 25.05.20 23:59h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImages and 2-d Convolution\nIn this exercise, we finally to work with images. It's time to update the file src/main/java/lme/DisplayUtils.java to the newest version.\nThis should provide you the following methods to work with images:\n // Open a file\n public static mt.Image openImage(String path) \n\n // Download and open a file from the internet\n public static mt.Image openImageFromInternet(String url, String filetype) \n\n // Save an image to a file\n public static void saveImage(mt.Image image, String path) \n\n // Show images\n public static void showImage(float[] buffer, String title, int width) \n public static void showImage(float[] buffer, String title, long width, float[] origin, double spacing, boolean replaceWindowWithSameName)\n\n\nThey all work with the class mt.Image so let's create it!\nBefore that, add the following two methods to your Signal class (they are used by the tests of this exercise):\n // Needs: import java.util.Random\n public void addNoise(float mean, float standardDeviation) {\n\tRandom rand = new Random();\n\tfor (int i = 0; i < buffer.length; i++) {\n\t buffer[i] += mean + rand.nextGaussian() * standardDeviation;\n\t}\n }\n\n public void setBuffer(float[] buffer) {\n\tthis.buffer = buffer;\n }\n\nPS: The method addNoise is also useful to test your mean and standardDeviation calculation in exercise 2.\nCreate a long signal and add noise with a specific mean and standardDeviation.\nThe result of your mean and standardDeviation method should be approximatelly the same.\nmt/Image.java\n4 Points\nThe code for this section should go to src/main/java/mt/Image.java\nOur goal is to share as much code with our mt.Signal class. So mt.Image will be a subclass of mt.Signal.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\nimport lme.DisplayUtils;\n\npublic class Image extends Signal {\n\n\n}\n\nmt.Image has five members (apart from the ones inherited by mt.Signal).\n // Dimensions of the image\n protected int width; \n protected int height; \n\n // Same as Signal.minIndex but for X and Y dimension\n protected int minIndexX;\n protected int minIndexY;\n\n // For exercise 4 (no need to do anything with it in exercise 3)\n protected float[] origin = new float[]{ 0, 0 };\n\nAnd two constructors:\n // Create an image with given dimensions\n public Image(int width, int height, String name)\n\n // Create an image with given dimensions and also provide the content\n public Image(int width, int height, String name, float[] pixels)\n\nAs shown in the exercise slides, we will store all the pixels in one array, like we did in Signal.\nThe array should have the size width * height.\nminIndexX,minIndexY should be 0 for normal images.\n\n\nCall the constructors of the super class Signal in the constructors of Image.\nYou can call the constructor of a super class by placing super(...) with the respetive arguments in the first line of the constructor of the subclass.\nThe constructor public Image(int width, int height, String name, float[] pixels) does not need to create its own array (take pixels for buffer).\nBut you can check whether pixels has the correct size.\nLet's also provide some getters!\n // Image dimensions\n public int width()\n public int height()\n\n // Minimum and maximum indices (should work like Signal.minIndex/maxIndex)\n public int minIndexX()\n public int minIndexY()\n public int maxIndexX()\n public int maxIndexY()\n\natIndex and setAtIndex should work like in Signal except that they now have two coordinate indices.\natIndex should return 0.0f if either the x or y index are outside of the image ranges.\n public float atIndex(int x, int y)\n public void setAtIndex(int x, int y, float value) {\n\nRemember how we calculated the indices in the exercise slides. You have to apply that formula in atIndex/setAtIndex.\n\n\nAdd the method show to display the image\n public void show() {\n DisplayUtils.showImage(buffer, name, width(), origin, spacing(), /*Replace window with same name*/true);\n }\n\nOpen the image pacemaker.png in a file src/main/java/exercise/Exercise03 (in the same project as previous exercise):\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage exercises;\n\nimport mt.GaussFilter2d;\nimport mt.Image;\n\npublic class Exercise03 {\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n\n Image image = lme.DisplayUtils.openImageFromInternet(\"https://mt2-erlangen.github.io/pacemaker.png\", \".png\");\n image.show();\n\n }\n}\n\nThe image is from our open access book.\n\nmt.ImageFilter\n3 Points:\nLike in Exercise 1, we want to be able to convolve our image signal.\nInfact, we will learn a lot of new ways to process images.\nOften, we need to create an output image of same size.\nLet's create an interface (src/main/java/mt/ImageFilter.java) for that, so we only need to implement this once.\npackage mt;\n\npublic interface ImageFilter {\n default mt.Image apply(mt.Image image) {\n Image output = new Image(image.width(), image.height(), image.name() + \" processed with \" + this.name());\n apply(image, output);\n return output;\n }\n\n default void apply(mt.Image input, mt.Image output) {\n throw new RuntimeException(\"Please implement this method!\");\n }\n\n String name();\n}\n\nThe code for the convolution should go to src/main/java/mt/LinearImageFilter.java\nOk. Now the convolution. The class has already a method that we will need later. It uses your sum method.\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\npublic class LinearImageFilter extends Image implements ImageFilter {\n\n public void normalize() {\n\tdouble sum = sum();\n\tfor (int i = 0; i < buffer.length; i++) {\n\t buffer[i] /= sum;\n\t}\n }\n}\n\nCreate a constructor for it. Recall how we implemented LinearFilter!\nminIndexX and minIndexY need to be set to $-\\lfloor L_x/2 \\rfloor$ and $-\\lfloor L_y/2 \\rfloor$ when $L_x$ is the\nfilter's width and $L_y$ the filter's height.\n public LinearImageFilter(int width, int height, String name)\n\nConvolution in 2-d works similar to convolution in 1-d.\n$$K_x = \\lfloor L_x/2 \\rfloor$$\n$$K_y = \\lfloor L_y/2 \\rfloor$$\n$$g[x,y] = \\sum_{y'=-K_y}^{+K_y} \\sum_{x'=-K_x}^{+K_x} f[x-x', y-y'] \\cdot h[ x', y' ] $$\n$$g[x,y] = \\sum_{y'=\\text{h.minIndexY}}^{\\text{h.maxIndexY}} \\sum_{x'=\\text{h.minIndexX}}^{\\text{h.maxIndexX}} f[x-x', y-y'] \\cdot h[ x', y' ] $$\nRemember to use atIndex and setAtIndex to get and set the values.\nImplement the convolution in the method apply.\nThe result image was already created by our interface ImageFilter.\n public void apply(Image image, Image result)\n\n\n\nSource: https://github.com/vdumoulin/conv_arithmetic\nNow it's time to test!\nUse the file src/test/java/mt/LinearImageFilterTests.java.\nGauss Filter\n2 Points\nThe code for the Gauss filter should go to src/main/java/mt/GaussFilter2d.java.\nThe Gauss filter is a LinearImageFilter with special coefficients (the filter has the same height and width).\n// <your name> <your idm>\n// <your partner's name> <your partner's idm> (if you submit with a group partner)\npackage mt;\n\npublic class GaussFilter2d extends LinearImageFilter {\n \n}\n\nIt has the following constructor\n public GaussFilter2d(int filterSize, float sigma)\n\nIn the constructor, set the coefficients according to the unormalized 2-d normal distribution with standard deviation $\\sigma$ (sigma).\nMath.exp is the exponetial function. Use setAtIndex: $x$ should run from minIndexX to maxIndexX and $y$ from minIndexY to maxIndexY.\n$$ h[x,y] = \\mathrm{e}^{-\\frac{x^2+y^2}{2 \\sigma^2}}$$\nCall normalize() at the end of the constructor to ensure that all coefficients sum up to one.\nTest your Gauss filter in Exercise03.java.\nUse arbitray values for sigma and filterSize.\nThe Gauss filter will blur your input image clearly if you chose a large value for sigma.\n\nThere is also a unit test file that you can use: src/test/java/mt/GaussFilter2dTests.java\nCalculating with Images\n1 Points\nThe code for this section should go to src/main/java/mt/Image.java.\nImplement the method Image.minus in Image.java that subtracts the current image element-wise with another one and returns the result:\n public Image minus(Image other)\n\nWe use this method to calculate error images.\nYou can implement this with only one loop over the elements of the buffers of the two images.\nDemo\nThis is not required for the exercise!\nPlace the file src/main/java/exercises/Exercise03Demo.java\nin your project folder and run it.\n\nYou should see an interactive demo applying your Gauss filter to a noisy image.\nYou change change the used parameters.\nSubmitting\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nThen, compress your source code folder src to a zip archive (src.zip) and submit it on studOn.\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/","title":"Exercise 3"},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"body":"Submission\nSubmission deadline: 01.06.20 23:55h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nImage Transformations\nIn the previous exercises, we built a Signal and Image class for performing basic operations on the \ninput data. We also implemented various filters to process the data and remove noise. \nIn this exercise we will build on top of the image class and implement methods for performing image transformations.\nIn many medical applications there is a need to align two images so that we \ncan combine the information between the images. This can be due to the images coming from \ndifferent modalities like (CT and MRI) or in scenarios were you have an patient data at from \ndifferent time (before and after an surgery) and you want to compare between these two images. \nIn all these scenarios we use image registration bring the different images together.\nIn the below image, two x-ray views (1) and (2) are fused together to obtain the combined view(3)\nwhich produces more information for diagnosis. This is achieved using image registration between view(1) and view\n \nImage Source: Hawkes, David J., et al. \"Registration and display of the combined bone scan and \nradiograph in the diagnosis and management of wrist injuries.\" European journal of nuclear medicine \n18.9 (1991): 752-756. \nOne of the crucial components of image registration is image transformations.\nIn this exercise we will implement basic image transformations. Additionally, we need to implement an \ninterpolation method to find out the image intensity values at the transformed coordinates. \n\nOverview of tasks\n\nWe will implement the following tasks for this exercise.\n\nHelper functions (a. Image origin, b. Interpolation)\nImage Transformation (a. Translation, b. Rotation, c. Scaling)\n\nWe introduce the basic theory about image transformations in theoretical background section.\nPlease read the theory before proceeding since we don't re-introduce everything in the task description. \nTask Description\n\nWe provide the main method for the task with an interactive ImageJ plug-in in the files\nsrc/main/java/exercises/Exercise04.java\nand src/main/java/mt/ImageTransformer.java\n\n0. Getting started\n1 Point\n\n\nFor Exercise 4 we provide a GUI that displays the image with different image transformation options.\n\n\n\nOnce you have all the transformations implemented you should be able to adjust the sliders and perform the desired transformations in an interactive manner.\n\n\nThe transformations requires an origin point about which we perform all the transformation.\n\n\nExtend the Image class with these three methods\n\n\n // store the origin points x,y as \n // a class variable\n public void setOrigin(float x, float y)\n\n // the origin() returns the {x,y} as float \n // array from the stored origin class variable. \n public float[] origin()\n\n // Sets the origin to the center of the image\n public void centerOrigin()\n\n\nTo ensure that everything is running, run the main function.\nWe already set the origin point for you in the file src/main/java/exercises/Exercise04.java\nTo ensure that everything is running, run the main function of Exercise04.\n\n1. Image interpolation\n4 Points\n\n\nSince the image transformations heavily relies on the interpolation, we first implement the interpolation method by extending the Image class with the following method:\n\n\npublic float interpolatedAt(float x, float y) \n\n\nThe method takes in a physical $(x,y)$ coordinate and returns the image intensity at that position.\nWe use bilinear interpolation to find the value at $(x,y)$ (described in the theory).\n\n\nWe can rewrite the interpolation equation using the linear interpolation formula when we want to interpolate between two points $x_1,x_2$ with function value $f(x_1),f(x_2)$ to find out the function value $f(x)$ at $x$.\n\n\n$$ \\frac{f(x) - f(x_1)}{x-x_1} = \\frac{f(x_2) - f(x_1)}{x_2 - x_1} $$\n\n\n\n\nSince we already know the difference $x_2 - x_1$ is either 1.0 if we have a pixel spacing of 1.0 or pixel spacing, we can simplify the above equation as follows:\n\n$$f(x) = f(x_1) + (x-x_1) (f(x_2) - f(x_1))$$\n\n\n\nYou can use the function below to compute linear interpolation between two points $x_1,x_2$ at $x$\n\n // Definition of arguments\n // diff_x_x1 = x - x_1 compute the difference between point x and x_1\n // fx_1 = f(x_1), pixel value at point x_1\n // fx_2 = f(x_2), pixel value at point x_2 \n\n float linearInterpolation(float fx_1, float fx_2, float diff_x_x1) {\n return fx_1 + diff_x_x1 * (fx_1 - fx_2);\n }\n \n\n\n\nWe now have an way to interpolate between two points in 1D. We need to extend this to 2D case such that we can use \nit for interpolating values in our image. An illustration of how this can be done is \nalready given in the theory section.\n\n\nImplementation detail We describe here possible way to implement the interpolation scheme.\n\n\nFind the 4 nearest pixel indices, for the given physical coordinate $(x,y)$. To do, this you have to transform\nthe physical coordinate to the index space of the image.\n\n\nHint: In physical space all the values of $x$ and $y$\nare computed from origin. So we just need to subtract the origin from the coordinates for this correction.\nx -= origin[0]\ny -= origin[1]\n\n\n\nPixel spacing also alters the physical coordinates and needs to be corrected for. \nThis can be done using just by dividing each coordinate by the pixel spacing.\nx /= spacing;\ny /= spacing\n\n\n\nHint: Since each pixel is a unit square you can round up and down each coordinate ($x$ and $y$) separately \nto get the 4 nearest pixels coordinates.\n\n\nInterpolate along an axis (here we choose the x-axis) initially using the linear interpolation \nfunction to obtain intermediate points.\n\n\nNow interpolate along the intermediate points (i.e you are interpolating along y-axis)\n\n\nNote: Take care of image origin and pixel spacing for the input coordinates before you perform any of the steps.\nAlso, always use atIndex and setIndex for accessing the image values. \nThis ensures that we handle the values at boundary correctly.\n\n\n\n\nExample:\nHere we look at a single point to understand how to implement our algorithm\n\n\nIf we have an input $(x,y) = (0.4,0.4)$, then the 4 nearest pixel coordinates are $(0,0)$,$(1,0),(1,1),(0,1)$\n\n\nInterpolating the values between the points $a = (0,0)$, $b = (1,0)$, find the intermediate \nvalue at point $I_1 = (0.4,0)$.\n\n\nSimilarly interpolate between $c = (0,1)$ and $d = (1,1)$ to find the intermediate value at point $I_2 = (0.4,1)$.\n\n\nNow we can just use the values at the intermediate points $I_1 = (0.4,0)$ and $I_2 = (0.4,1)$ and \nperform a linear interpolation in the y direction to obtain the final result at $(0.4,0.4)$.\n\n\n\n\n2. Image Transformation\n5 Points\nNow we can start with the implementation of ImageTransformer class.\n\nThe class consists of the following member functions for translation\n\n// Transformation parameters\npublic float shiftX; // tx\npublic float shiftY; // ty\npublic float rotation; // theta\npublic float scale; // s\n\n\n\nAlso use the interface ImageFilter abstract class which you have implemented in the previous exercises. \nThis can be done using implements keyword.\n\n\nAdd the method apply(Image input,Image output) which takes in two variables input and \noutput of Image class type. The input variable provides the input image to our transformer class. \nThe output variable is where the transformed image is stored.\n\n\nConsider each pixel in the image with index $(i,j)$. When we access an image pixel we get \nthe pixel intensity stored at the location $(i,j)$.\n\n\nHere $(i,j)$ represents the image coordinates $(x,y)$ and the pixel value at $(i,j)$ represents $f(x,y)$.\n\n\nWe want to transform $(x,y) \\to (x',y')$ and find the pixel value at the new location for a \ngiven set of input transformation parameters $t_x,t_y,\\theta,s$ to transform the input image coordinate $(x,y)$.\n\n\nLet us go over a possible approach to implement the apply method which \nimplements (translation,rotation and scaling). In addition, once we have the transformed coordinates $(x',y')$ we \ninterpolate the value at this coordinate to set the output value of the new image.\n\n\nWe can implement the transformations and interpolation using the equations defined \nin the theory section. \n\n\nHowever, from the implementation perspective it is much easier to ask what will be my output image value \nat the current position $(x',y')$ for the given transformations parameters.\n\n\nFor this we need to find the input coordinate $(x,y)$ for the given transformation parameters.\nThis mapping from $(x',y') \\to (x,y)$ is known as the inverse transformation.\n\n\nJust to recap our current aim is to iterate over the output image along each \npixel $(i,j)$ (also referred as $(x',y')$) and find the inverse transformation (x,y).\nOnce we find $(x,y)$ we can just interpolate the values in the input image at $(x,y)$ and\nset it to the output image value at (x',y').\n\n\nAn example code to accomplish this looks like below:\n\n\n// We need to compute (x,y) from (x',y')\n// We use xPrime,yPrime in the code to indicate (x',y')\n// Interpolate the values at (x,y) from the input image to get\nfloat pixelValue = input.interpolatedAt(x,y);\n\n// Set your result at the current output pixel (x',y')\noutput.setAtIndex(xPrime, yPrime, pixelValue);\n\n\n\n\nThe inverse transformations can be computed using the following equations.\n\n\nTranslation\n\n$x = x' - t_x$\n$y = y' - t_y$ \n\n\n\nRotation\n\n$x= x' \\cos\\theta + y' \\sin\\theta$\n$y= - x \\sin\\theta + y' \\cos\\theta$\n\n\n\nScaling\n\n$x= \\frac{x'}{s}$\n$y= \\frac{y'}{s}$\n\n\n\nImplementation detail Now you can directly use the above equations to implement translation, rotation and scaling.\nThe entire apply method for the ImageTransformer class can be implemented as follows:\n\n\nIterate over each pixel in the output image (although they are just the same as input initially).\n\n\nAt each pixel the index $(i,j)$ represents our coordinates $(x',y')$ of the output image\n\n\nApply the transformations using the equations described above to find $(x,y)$\n\n\nNow set the output image value at $(i,j)$ (also referred as (x',y')) from the interpolated values at $(x,y)$ \nfrom the input image.\n\n\nUse the setIndex() for setting the values of the output image and atIndex() for getting the values \nfrom input image.\n\n\nIn the above formulation we assume that we have pixel spacing of $spacing = 1.0$ and the \nimage origin at $(x_0, y_0) = (0,0)$.\n\n\nYou can extend this to work for different values of pixel spacing and origin.\n\n\nHint: Think of pixel spacing as a scaling and origin as a translation transformation. \n(apply both spacing and origin transformation to the input coordinates $(x,y)$ as $(x * px , y * py) + (x_0,y_0))$ \n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/","title":"Exercise 4"},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"body":"Submission\nSubmission deadline: 08.06.20 23:55h\nPlease ensure that all files you created also contain your name and your IDM ID and also your partner's name and IDM ID if you're not working alone.\nEach exercise has 10 points. You have to achieve 30 of 60 points in six homework exercises to pass the module.\nQuanitfying Errors\n3 Points\nIn Exercise03, we have seen that we can use linear low-pass filters, like the Gauss filter, to reduce \nthe amount of noise in images. Let's test that!\nAdd two static methods to the Image class:\npublic static float meanSquaredError(Image a, Image b);\npublic static float psnr(Image a, Image b, float maxValue); // maxValue is 255 for PNG images\n\n\n$$ \\mathrm{MSE}_{ab}= \\frac{1}{M} \\sum _{i=0}^{M} \\left(a_i - b_i\\right)^2 $$\n$$ \\mathrm{PSNR_{ab}} = 20\\cdot \\log_{10}(\\mathtt{maxPossibleValue}) - 10\\cdot \\log_{10}(\\mathrm{MSE}_{ab}) $$\n\nStatic also means that you will use them like float mse = Image.meanSquaredError(imageA, imageB);.\nOpen a test image and add some noise using addNoise in exercise.Exercise05 (src/main/java/exercise/Exercise05).\n (new ij.ImageJ()).exitWhenQuitting(true);\n Image original = lme.DisplayUtils.openImageFromInternet(\"https://mt2-erlangen.github.io/shepp_logan.png\", \".png\");\n original.setName(\"Original\");\n \n Image noise = new Image(original.width(), original.height(), \"Noise\");\n noise.addNoise(0.f, 10.f);\n\n Image noisyImage = original.minus(noise); // You might also implement your own `plus` ;-)\n\nApply a Gauss filter (choose a good filterSize and sigma) on the noise image and compare the result with the original image.\nCan the error be reduced in comparision to the unfiltered noisy image? Also take a look on the error images that you can\ncalculate using your minus method of the class Image.\n\nHint: You can use a for-loop to try out different values for sigma.\nHint: You do not need to submit written answers to the questions in the text. Just do the correponding experiments!\n\nNon-Linear Filters\n3 Points\nA quality criterion for medical images are sharp edges.\nHowever, though the Gauss filter reduces the noise it also blurs out those edges.\nIn this exercise, we try to mitigate that problem using non-linear filters.\nNon-linear filters calculate similar to a convolution each pixel value in the output from a neighborhood of the\ninput image. Remember the sliding window from exercise 3? Non-linear filters do exactly the same.\n\nSource: https://github.com/vdumoulin/conv_arithmetic\nCreate a class mt.NonLinearFilter in the file src/main/java/mt/NonLinearFilter.java:\n// Your name here <your idm>\n// Your team partner here <partner's idm>\npackage mt;\n\nimport lme.WeightingFunction2d;\nimport lme.NeighborhoodReductionFunction;\n\npublic class NonLinearFilter implements ImageFilter {\n\n // Name of the filter\n protected String name; \n // Size of the neighborhood, 3 would mean a 3x3 neighborhood\n protected int filterSize;\n // Calculates a weight for each neighbor\n protected WeightingFunction2d weightingFunction = (centerValue,neighborValue,x,y) -> 1.f;\n // Calculates output value from neighbors and weights\n protected lme.NeighborhoodReductionFunction reductionFunction;\n\n public NonLinearFilter(String name, int filterSize) {\n this.filterSize = filterSize;\n this.name = name;\n }\n\n @Override\n public String name() {\n return name;\n }\n}\n\nAs you can see, NonLinearFilter uses two interfaces. You can copy them into your src/main/java/lme/ folder.\n// in file `src/main/java/lme/WeightingFunction2d.java`\npackage lme;\n\n@FunctionalInterface // Does nothing. But Eclipse is happier when it's there.\npublic interface WeightingFunction2d {\n // Assigns a neighbor (shiftX, shiftY) a weight depending on its value and the value of the pixel in the middle of the neighborhood\n float getWeight(float centerValue, float neighborValue, int shiftX, int shiftY);\n}\n\nand\n// in file `src/main/java/lme/NeighborhoodReductionFunction.java`\npackage lme;\n\n@FunctionalInterface\npublic interface NeighborhoodReductionFunction {\n // Calculates the output pixels from the values of the neighborhood pixels and their weight\n float reduce(float[] values, float[] weights);\n}\n\nImplement the method apply for NonLinearFilter.\n @Override\n public void apply(Image input, Image result)\n\nThe method should calculate each output pixel from a neighborhood. So\n\nCreate an array to hold the values of the neighborhood pixels. How many neighborhood pixels are there?\nLoop over each output pixel\n\nFill the array of neighborhood pixels with values from the input image (needs two inner loops)\nUse this.reductionFunction.reduce to determine the value of the output pixel. You can use null for the second parameter for now (we will implement weights later).\nSave the value to the output image (using setAtIndex).\n\n\n\nOverall, the method should look very similar to your LinearImageFilter.apply method.\nTo test your method, implement a MedianFilter in a file src/main/mt/MedianFilter.java as a subclass of NonLinearFilter.\n// Your name here\n// Team partner's name here\npackage mt;\n\nimport java.util.Arrays;\n\npublic class MedianFilter extends NonLinearFilter {\n\tpublic MedianFilter(int filterSize) {\n // TODO:\n super(...);\n reductionFunction = ...;\n\t}\n}\n\nThe MedianFilter is a LinearImageFilter with\nreductionFunction (values, weights) -> { Arrays.sort(values); return values[values.length / 2]; }\n(it sorts the values and takes the one in the middle).\nAll you need to do is to call the super constructor and set reductionFunction.\nDoes the median filter also reduce the noise in the image?\nBilateral Filter\n2 Points\nNext, we will implement the BilateralFilter.\npackage mt;\n\npublic class BilateralFilter extends NonLinearFilter {\n GaussFilter2d gaussFilter;\n\n public BilateralFilter(int filterSize, float spatialSigma, float valueSigma){\n ...\n }\n}\n\nThe bilateral assign a weight to each neightborhood pixel.\nSo modify your NonLinearFilter.apply method that it also creates a weights array and uses weightingFunction.getWeight to\nfill it. reductionFunction should now also be called with the weights array.\nThe bilateral has to parameters $\\sigma_{\\text{value}}$ and $\\sigma_{\\text{spatial}}$.\nFor large values of $\\sigma_{\\text{spatial}}$ the bilateral filter behaves like a Gauss filter.\nInitialize gaussFilter in the constructor. Set weightingFunction so that the weights $w_s$ of the Gauss filter are returned.\nSet reductionFunction. It should multiply each of the values with its weight and then sum the results up.\nYour BilateralFilter should now behave like a Gauss filter. Does it pass the test in GaussFilter2dTests when you\nuse BilateralFilter instead of GaussFilter2d?\nEdge-Preserving Filtering\n2 Points\nTo make our bilateral filter edge preserving, we have to use also $\\sigma_{\\text{value}}$.\nThe value weight $w_v$ is calculated as follows\n$$ w_v = \\exp\\left(-\\frac{\\left(\\mathtt{centerValue}-\\mathtt{value}\\right)^2}{2 \\sigma_{\\text{value}}^2}\\right) $$\nJust multiply with this value $w_v$ in weightingFunction. The total weight of a pixel will then be $w_v \\cdot w_s$.\nNow we have the problem that our weights will no longer add up to one! To solve this problem divide by the sum of weights\nin the reductionFunction.\nCan you reduce the error even more using the bilateral filter? My results look like this.\n\n \n \n \n \n \n \n \n Original\n Noisy\n Gauss filtered\n Bilateral filtered\n \n \n \n \n \n \n \n \n \n Error Unfiltered\n Error Gauss\n Error Bilateral\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/","title":"Exercise 5"},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"body":"Submission deadline: 29.06.20 23:55h\nIn the last exercise, we want to have a look at edge detection and segmentation.\nEdge Detection\n 7 Points\nOpen a test image in a new file src/main/java/exercise/Exercise06.java.\n// Your name\n// Team parnter name\npackage exercises;\n\nimport lme.DisplayUtils;\nimport mt.LinearImageFilter;\n\npublic class Exercise06 {\n public static void main(String[] args) {\n\t(new ij.ImageJ()).exitWhenQuitting(true);\n\tmt.Image cells = lme.DisplayUtils.openImageFromInternet(\"https://upload.wikimedia.org/wikipedia/commons/8/86/Emphysema_H_and_E.jpg\", \".jpg\");\n\n }\n}\n\nWe will use the Sobel Filter, to estimate the gradient of the image.\nThe Sobel Filter uses two filter kernels. One to estimate the x-component of the gradient and one for the y-component.\n\nCreate two LinearImageFilters with those coeffients. You can use filterX.setBuffer(new float[]{...})\nor setAtIndex to do that.\nFilter the original image with both of them!\n\n \n\t\n\t\n \n \n\tX component of gradient $\\delta_x$\n\tY component of gradient $\\delta_y$\n \n\nYou should now have two intermediate results that can be interpreted as the x-component $\\delta_x$\nand y-component $\\delta_y$of the estimated gradient for each pixel.\nUse those two images to calculate the norm of the gradient for each pixel!\n$$ \\left|\\left| \\nabla I \\right|\\right| =\\left|\\left| \\left(\\delta_x,\\ \\delta_x \\right) \\right|\\right| = \\sqrt{ \\delta_x^2 + \\delta_y^2}$$\n\nFind a good threshold and set all gradient magnitude values to zero that are below this values and all other to 1.f to\nobtain an image like this with a clear segmentation in edge pixels and non-edge pixels.\n\nSegmentation\n 3 Points\n\n Source: https://commons.wikimedia.org/wiki/File:Emphysema_H_and_E.jpg (cc-by-2.0)\nFor histologic examinations colored subtances called stains are used to enhance the constrast\nof different portions of the tissue.\nUse a suitable threshold to segment the individual sites with high contrast (0 background, 1 contrasted cells).\nYou can use the following method to overlay your segmentation with the original image.\n // In lme.DisplayUtils\n public static void showSegmentedCells(mt.Image original, mt.Image segmented) \n // You may also try `showSegmentedCells(cells, segmentation, true);` with the newest version of DisplayUtils\n\n\nImproving your Segmentation\nThis is optional and not required for the exercise.\nYou might want to go directly to the evaluation of this year's exercises:\nhttps://forms.gle/2pbmuWtmeTtaVcKL7\nYou may notice that by just choosing a threshold you may not be able to separate each individual structure.\n\nYou can try out some operations from the menu Process > Binary while you have your 0/1 segmentation focused.\nYou have to convert to 8-bit first. E.g.\n\n\n\nImage > Type > 8-bit\nProcess > Binary > Watershed\n\n\nOr \"click\" on menu items in your program code.\n segmentation.show();\n IJ.run(\"8-bit\");\n IJ.run(\"Watershed\");\n DisplayUtils.showSegmentedCells(cells, segmentation);\n\n\nEvaluation\nWe redesigned the exercises from scratch for this semester.\nTherefore, some of the exercises might have been difficult to understand or too much work. \nWe are glad for your feedback to help future semesters' students😊:\nhttps://forms.gle/2pbmuWtmeTtaVcKL7\n\n\n\n\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/","title":"Exercise 6"},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"body":"Theoretical background\nImage Transformation\nOverview of image transformations\n\nTranslation\nRigid or Euclidean (Rotation, translation)\nSimilarity (Rotation, translation, scaling)\nAffine\nProjective\n\nConsider a point $\\mathbf{x}=(x,y)$ in the 2D space. Then\nwe can define translation, rotation and scaling\nusing the following equations which maps the points from $\\mathbf{x} \\to \\mathbf{x}'$ where $\\mathbf{x}' = (x',y)'$ is the new transformed coordinates.\nTranslation\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = x + t_x$\n$y' = y + t_y$.\n\nThis can also be written in vector notation as follows:\n\n$\\mathbf{x}' = \\mathbf{x} + \\mathbf{t}$ where $\\mathbf{t} = (t_x, t_y)$\n\n\nRotation\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = x cos\\theta + y sin\\theta$\n$y' = -x sin\\theta + y cos\\theta$\n\n\n\nScaling\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = sx$\n$y' = sy$.\n\n\n\n\nWe can also chain the different transformations and compute the transformed coordinate using a single equation\n$$x' = s (x \\cos\\theta + y \\sin\\theta ) + t_x$$\n$$y' = s(-x \\sin\\theta + y \\cos\\theta) + t_y$$\n\n\nIllustration of different transformation\n\nImage Source : Szeliski, Richard. Computer vision: algorithms and applications \n\nImage Source : Szeliski, Richard. Computer vision: algorithms and applications \nFor more details about image transformations, you can \nalso check out the computer vision book by Richard Szeliski. \nA free pdf is available on the website.\nImage interpolation\nLet us consider an example image\ntransformation. Initially we have an unit square with its left corner placed at the origin (0,0). Assume that we have image intensity values at the\ncorners of the unit square at a = (0,0), b =(0,1),\nc = (1,1), d = (0,1).\nWe apply a small translation $\\mathbf{t} = (0.5,0.5)$ to the square. As you can see in the image, now our left corner point is at $a' = (0.5,0.5)$.\nSince we don't have the value at this point we are forced to approximate the value from the information available to us. This is the main\nreason for implementing image interpolation function as image transformations can always lead to coordinates for which we don't have any value and we approximate the value using the neighbourhood information.\n\nThe way in which we use the neighbouring information governs the quality of the interpolated image. The different types of interpolation are as follows:\n\nNearest neighbour\nBilinear\nBi-cubic\n\nIllustration of different types of interpolation\nThe image below shows how the different types of interpolation works. The discrete points are the places where we know the function value and\nthe lines connecting these points represents the interpolated function values.\n\nImage Source : Wikipedia\nWe will implement only bilinear interpolation\nfor our Image class.\nLets dive a bit deeper into the bilinear\ninterpolation and look at the how the values are interpolated using this method.\nBilinear interpolation\n\nImage Source : Wikipedia\nConsider the above image where the red dots ($Q_{ij}$) indicate the discrete points where we know the function value. We want to approximate the function value at point $P$.\nConsider the points(red dots) in the above image:\n$$Q_{11} = (x_1,y_1), Q_{21} = (x_2,y_1)$$\n$$ Q_{12} = (x_1,y_2), Q_{22} = (x_2,y_2)$$\nAssume that each of these points $Q_{ij}$ corresponds to an image pixel with intensity values.\nNow we need to find the image intensity value at point $P= (x,y)$ which is in between the points $Q_{ij}$\nLet us consider one coordinate at\na time (i.e. $x_i$ or $y_i$) for interpolation.\nHere we intially interpolate along the $x$-axis.\nSo now our aim is to find values at $P(x,y_i)$.\n(i.e. find intermediat values $R_i (x,y_i)$. We have two values of $y_i$ so we can find two intermediate values.)\nWe can obtain two such values by interpolating along\n$Q_{11}, Q_{21}$ and find out the intermediate value as $R_1$ and between $Q_{12}, Q_{22}$ and find out the intermediate value $R_2$.Look at the image of how we just interpolate along the line.\nWe can directly use the linear interpolation equation to find out the values of $f(R_1)$ and $f(R_2)$\n$$ \\frac{f(x) - f(x_1)}{x-x_1} = \\frac{f(x_2) - f(x_1)}{x_2 - x_1} $$\nOnce we have the values at $R_1 = (x,y_1)$ and $R_2 = (x,y_2)$ we can again use the same linear interpolation formula along the $y$-axis and find the function value $f(P)$ at $P=(x,y)$.\nThis way we can interpolate(approximate) any values (x,y) if we know the neighbouring values. However when we actually implement the method we also need to find out the neighbouring values on our own as they are not provided.\n","id":"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/","title":"Image transformation theory"},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"body":"\n\nOn Windows, download the latest Java version (14.1) from Oracle.\nOn Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.\nAt least Java 11 is required.\n\n\nInstall Eclipse from https://www.eclipse.org/downloads/\n\n\nOpen Eclipse \n\n\n\nImport...\n\n\n\nExisting Gradle Project...\n\n\n\nChose path of the downloaded project and click Next\n\n\n\nGrab a coffee while it's downloading ImageJ\n\n\n\nTry to run Exercise01\n\n\n\nYou are seeing red squiggles, you found a bug in a Eclipse plugin. Upgrade it in the Eclipse Marketplace! \n\n\n\nSearch for gradle build! Then, click on the Installed button of \"Buildship Gradle Integration.\n\n\n\n... and click on Update! This should solve the bug after a restart.\n\n\n\nYou should now see ImageJ when you start Exercise01.\n\n\n\nIf you're still facing problems: please also check whether a valid Java Runtime Enviroment was found by right-clicking on the project folder\n(if it still has red crosses). Select Properties -> Java Build Path. Sometimes Eclipse does not find your Java\ninstallation. You can select it there.\n\n\n\nBack to exercise 01\n\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/","title":"Import a Gradle project with Eclipse"},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"body":"\n\nOn Windows, download the latest Java version (14.1) from Oracle.\nOn Ubuntu Linux, you can install sudo apt install openjdk-14-jdk (only on 19.10) or sudo apt install openjdk-11-jdk.\nAt least Java 11 is required.\n\n\nYou can get IntelliJ from here. There's a free community edition and you can also \nunlock the Ultimate Edition when applying with your FAU email adress here.\n\n\nStart IntelliJ and select \"Open or Import\"\n\n\n\n\n\nSelect the downloaded folder\n\n\n\nWait until all dependencies are downloaded\n\n\n\nBack to exercise 01\n","id":"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/","title":"Import a Gradle project with IntelliJ"},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"body":"Contents\n\nIntroduction\nVolume\nPost-Processing\nMethod of Otsu's\nStatistical Evaluation\nOutlook and Conclusion\n\nIntroduction\nDuring this semester we will learn the basic of magnetic resonance imaging (MRI) and how we can use post-processing methods on these images.\nWe will focus on the post-processing method called segmentation and will take a look on how to evaluate our method.\n\nFind an informative title for your project report. \"Project Report\" and \"Introduction\" are not good titles.\nWhat is magnetic resonance imaging?\nWhen and from whom was it introduced? What kind of electromagnetic radiation is used to acquire the images? How does the radiation interact with the patients body? \nWhat are advantages and disadvantages of MRI in comparisson with Computer Tomography(CT). Include at least two advantages and\ntwo disadvantages.\nGive a short overview of the contents of the following sections of your project report.\nProof all your statements with references. You should use at least four distinct sources in your introduction that are\nnot webpages.\n\nThe introduction should not be longer than one page and but at least half a page. \nYour introduction and conclusion should not contain any images.\nPlease have a look on our checklist for a good project report.\n\n\nNext task\n","id":"https://mt2-erlangen.github.io/archive/WS2021/introduction/","title":"Project Work 1 – Introduction"},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"body":"Otsu's method\nIn the previous task we implemented a simple segmentation method. However we still need to pass a threshold manually and evaluate it by ourselves.\nTo conquer that, we will implement Otsu's method in our PostProcessing class:\n\npublic static int Otsu(Image image)\n\n\nHistogram\nThe method finds the optimal threshold for bimodal histograms. Therefore we need to add another helper method to our PostProcessing class:\n\npublic static Signal Histogram(Image image)\n\n\nWe can describe the Histogram as a Signal from our Framework with the size of all possible pixel values of a grey scale images. \nBefore saving the pixel counts of each pixel value to the histogram, the image needs to be normalized to the grey scale pixel values 0-255. Create a function for that:\n\npublic static Image normalizeToGreyScale(Image image)\n\n\nYou can normalize the image with the formula: $I_N=(I-Min)\\frac{newMax-newMin}{Max-Min}+newMin$. \n Hint: Make sure that you have integer pixel values!\nNow you can iterate over your normalized input image and increase the entry of the histogram according to the pixel value of the image. Due to the fact that the histogram is a Signal we can use the show()) method to display it: \n\n\n \n \n\n\nMIP Image of Volume1 \nHistogram of the Image \n\n\n \nOtsu's method\nThe method tries to maximize the following function to find the best threshold: $\\sigma_b^2(\\theta)=P_1(\\theta)P_2(\\theta)(\\mu_1(\\theta)-\\mu_2(\\theta))^2$\n\nSource\nUse the following formulas to calculate the different parts of the equation, where $h(i)$ is the normalized histogram:\n\n$P_1(\\theta)=\\sum_{i=0}^\\theta h(i)$\n$P_2(\\theta)= 1-P_1(\\theta)=\\sum_{i=\\theta+1}^{L-1}h(i)$\n$\\mu_1= \\frac{1}{P_1(\\theta)}\\sum_{i=0}^\\theta (i+1)h(i)$\n$\\mu_2= \\frac{1}{P_2(\\theta)}\\sum_{i=\\theta+1}^{L-1}(i+1)h(i)$\n\nFor the implementation you can orientate yourself at the following steps:\n\nThink about the possible values for $\\theta$ in an gray scale image\nCreate the necessary amount of float arrays for the specific size\nCalculate $P(\\theta)$ and $\\mu(\\theta)$ according to the formulas\nNow calculate $\\sigma_b^2$ for the different $\\theta$ and save the values in an float array\nFind the index of the maximum in $\\sigma_b^2$ \n\nYou have now found the optimal threshold for the input image!\nConsider the following points in your report:\n\nDescribe the method of Otsu: \n\nWhat is the goal of the method? \nHow does it solves the problem?\n\nWhich role does the histogram of the image play?\nDescribe the method with the formulas\nInclude at least one segmented picture with the found threshold\n\n\n\n\nCite the original publication of the method from the year 1979.\n\nThis section should be half a page to one page long.\nPrevious: Post-Processing\nNext: Statistical Evaluation\n","id":"https://mt2-erlangen.github.io/archive/WS2021/otsu/","title":"Project Work 4 – Otsu's method"},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"body":"Post-Processing\nPost-processing of medical images is an important step when working with medical images. We will learn and implement several methods.\nWe will set up a new class mt.PostProcessing for our methods:\n// Your name <your idm>\n\npackage mt;\n\npublic class PostProcessing {\n\n }\n\n\nIn the project report you should answer the following questions:\n\nWhat is post-processing in context of image processing?\nWhy is it important? - Give at least two examples.\n\nMaximum Intensity Projection\nWe are now looking at a specific post-processing method called maximum intensity projection (MIP), which is an important method for magnetic resonance angiography. The method will be used to prepare our MRI Volumes to single images which can be segmented. \nIf you scroll through the image sets, you will see bright spots in the different layers. However, we can not see the connected blood vessels in the brain.\nThat's where the MIP come into play. We are going to implement the following method in our PostProcessing class:\n\npublic static Image MaximumIntensityProjection(Volume volume)\n\n\nThe basic mechanism of the MIP is that we are creating a 2D image from our 3D Volume. We are only taking the maximum values of every slice and saving them into our resulting image. We are going through all our different slices and comparing our image values element by element and saving the highest pixel values in our resulting image:\n\nIf we scroll again through our MRA image set we see again only small white areas:\n\nAfter we apply our MIP algorithm we can see all the blood vessels!\n\nExplain in your project report:\n\nWhy and when do we use MRA instead of a normal MRI scan?\nWhy do we need a post-processing method like MIP for this image technique?\nWhy is it useful to use MIP before segmenting our picture?\n\nThreshold-based Segmentation\nAs mentioned before, we want to segment our MRI Volume after we used the MaximumIntensityProjection method.\nIn the beginning we want to implement a simple segmentation method to our PostProcessing class. \n\npublic static Image Segmentation (Image image, Integer threshold)\n\n\nConsider the following points in your report:\n\nExplain the principle function of the algorithm.\nWhy do we use segmentation methods?\nExplain two example applications where segmentation can be useful.\n\nThis section should be around one page long.\nPrevious: Volume\nNext: Method of Otsu's\n","id":"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/","title":"Project Work 3 – Post-Processing"},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"body":"Set Program Arguments in Eclipse\nGo to Run Configurations...\n\nCreate a New launch configuration with main class exercises.Exercise02\n\nSet the arguments with the file name in quotes: \"path to your data set file\" (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat). Don't forget the quotes!\n\nClick Run!\n","id":"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/","title":"Set Program Arguments in Eclipse"},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"body":"Set Program Arguments in IntelliJ\nSelect Run... in the menu Run.\n\nSelect Edit configurations...\n\nFill in the form with main class exercises.Exercise02 and your file name of the file that you want to open (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat) as programm arguments in quotes!\n\n","id":"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/","title":"Set Program Arguments in IntelliJ"},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"body":"Getting started\nImportant: You have to work alone on your project work. No team partners allowed anymore 😔!\nMR reconstruction for a three-dimensional volume can be done with two different methods. We are using slice selection in this project.\nSo we will need one class that represents our volume of the MRI images.\nIt turns out that we can interpret our volume just as a list of 2-d images.\nExplain in you report the method of slice selection:\n\nWhich field of the MRI scanner is used to encode specific positions in the patient?\nHow many of these fields exist and which directions do they cover?\nHow is a specific slice selected?\n\nThis part should be about a quarter to half a page long.\n\n\n\n\n\nA volume: very much just multiple images stacked one over another\n\n\nCreate a class mt.Volume\n// Your name <your idm>\n// No team partner... So sad 😢!\n\npackage mt;\n\nimport java.util.Arrays;\nimport java.util.stream.IntStream;\n\npublic class Volume {\n // Here we store our images\n protected mt.Image[] slices;\n\n // Dimensions of our volume\n protected int width, height, depth;\n\n // Spacing and origin like for mt.Image\n protected float spacing = 1.f; // spacing is now our voxel size\n protected float[] origin = new float[]{0, 0, 0}; // position of the top-left-bottom corner\n\n // A name for the volume\n protected String name;\n\n}\n\nCreate a constructor. Remember: width, height, depth, name must be set and slices must be created as an array.\nWe need depth images of size width $\\times$ height for the slices.\n public Volume(int width, int height, int depth, String name)\n\nGetters/setters...\n public int width()\n public int height()\n public int depth()\n public float physicalWidth() // width * spacing()\n public float physicalHeight() // height * spacing()\n public float physicalDepth() // depth * spacing()\n\n public mt.Image getSlice(int z) \n public void setSlice(int z, mt.Image slice)\n\n public float spacing()\n public void setSpacing(float spacing) // should also set spacing also for all slices!\n public String name()\n public float[] origin()\n\n // should set origin to (-0.5 physicalWidth, -0.5 physicalHeight, -0.5 physicalDepth) and call centerOrigin on each slice\n public void centerOrigin()\n\nWe need also another setter Method in our image class:\npublic void setSpacing(float spacing) // set spacing for the image\n\n\nNow comes the interesting part: visualize the volume!\nYou will need to update src/main/java/lme/DisplayUtils.java file and use the following command to visualize the volume.\n public void show() {\n lme.DisplayUtils.showVolume(this);\n }\n\nWe will work for our upcoming post-processing tasks with a magnetic resonance angiography (MRA) dataset. MRA is a special method in MRI to visualize vessels in images. You can download a volume from https://www.nitrc.org/projects/icbmmra.\nNote: The data set is in the NIfTI (Neuroimaging Informatics Technology Initiative) format, which you need to convert into our .tif format. ImageJ has a Plugin for it, which you would need to install.\nYou can also use one of the three already converted image sets:\n\nImage set 1\nImage set 2\nImage set 3\n\nOpen the saved tiff file in the main of a file src/main/java/project/Playground.java:\n\npackage project;\n\nimport mt.Volume;\n\nclass Playground {\n\n public static void main(String[] args) {\n (new ij.ImageJ()).exitWhenQuitting(true);\n \n Volume groundTruth = DisplayUtils.openVolume(\"path/to/file.tif\");\n groundTruth.show();\n \n }\n\n}\n\n\nYou can now scroll through the different slices.\nvia GIPHY\nHere a short summary of handy functions of ImageJ when working with MRI images.\n\nCtrl+Shift+C: Brightness and Contrast\nCtrl+Shift+H: Orthogonal Views (view volume from three sides)\nAfter selecting a line: Ctrl+K Line Plot\nCtrl+I: Get patient information of a DICOM\nLook at a 3-d rendering with ClearVolume\n\nPrevious: Introduction \nNext: Post-Processing\n","id":"https://mt2-erlangen.github.io/archive/WS2021/volume/","title":"Project Work 2 – Volumes"},"https://mt2-erlangen.github.io/cannyedge/":{"body":"Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n5: Canny-Edge\nThe Canny-Edge algorithm is one of the more advanced algorithms to perform edge detection. Unlike primitive approaches, like those you implemented in Task 4, Canny's algorithm leads to clearly defined edges (only one pixel in width) and a significant reduction in false detections (meaning regions of sharp brightness-transition, which are not edges of interest). \nThis is achieved through the following process: \n\nBlurring the image (Gaussian Blur) to reduce noise\nDetermining the image-gradient using the Sobel-kernel (→ Task 4)\nDetermining the gradient-direction for each pixel\nPerforming Non-Maximum-Suppression along the gradient-direction\nPerforming Hysteresis-Thresholding to select edges of intrest \n\nThese steps will be explained further later on.\n\n5.1: Blurring and Gradient\nThe first part of this task can be implemented directly in the run-method of the Task_5_CannyEdgeDetection-class.\nTo do:\n\n\nConvert the input-image to a FloatProcessor and apply a gaussian blur.\n\n📝 Note: \nThe $\\sigma$-parameter is one of the values you can play around with later on to improve your results. Once you are done, you will be able to set this value via a user-dialog. For now, a good starting point would be the value 2\n\n\n\nCreate 3 new FloatProcessors to store the image-gradient and the derivatives. Use the methods you implemented in Task 4 to apply a Sobel-operator and to calculate the gradient.\n\n\n\n5.2 Determining Gradient-Directions\nTo calculate the direction of each pixel, you will now implement a new method called getDir.\nThe formula for calculating the gradient-direction at a given pixel is:\n Θ = atan2(Gy , Gx) \nwith Gy and Gx being the values of the respective y- and x-derivatives at the current position.\n\n📝 Note: \nThe gradient-direction provides information about the angle or direction of an edge within the image. At any given point the edge will be perpendicular to the gradient direction. This will become important when it comes to performing Non-Maximum-Suppression (NMS). \nAn example: \n\n white pixels ≙ edge; arrow ≙ gradient-direction \n\nThe atan2-method used to determine the direction returns the angle $\\Theta$, that results from converting a cartesian coordinate (x,y) to radians (r,$\\Theta$). The angle theta is therefore returned in radians and you will need to convert it to degrees. \n\n\n ⚠ Important warning: ⚠\n \n The atan2-method expects coordinates in a standard cartesian coordinate-system (x→ / y↑). Since you are working with images, the y-axis is defined differently (x→ / y↓) and you will therefore need to call the method like this: Math.atan2 (-y, x) \n\nThe getDir-method will determine the gradient-direction for each pixel and then round it to one of the following values: 0°, 45°, 90°, 135°. These stem from the fact that an image is a discrete set of pixels and therefore we can only differentiate between these directions. \n\nGradient-directions: 0°, 45°, 90°, 135°\nTo do:\n\n\nCreate a new method:\npublic ByteProcessor getDir (FloatProcessor X_Deriv, FloatProcessor Y_Deriv){}\n\n\n\nCreate a ByteProcessor to store the directions\n\n\nCreate an int-array:\nint[] angles = {0,45,90,135,180};\n\n(180° is equivalent to 0° but needs to be considered as a seperate case)\n\n\nIterate through the input-FloatProcessors and calculate the direction for each pixel (in degrees). Remember that the y-axis is inverted.\n\n\nSearch for the closest match in the angles-array and store the final direction in the output-ByteProcessor. \n\n📝 Note: \nNegative values are simply \"mapped\" to the corresponding positive value (for example -45° ≙ 135° or -90° ≙ 90°). You can do this by simply checking if the value is negative and then adding 180°. If the closest match is 180° the direction is set to 0°\n\n\n\nReturn the final ByteProcessor\n\n\n\n5.3: Non-Maximum-Suppression\nDuring NMS the goal is to reduce edges to a single-pixel-line. This is achieved by searching for local intensity-maxima in the Gradient-Direction, so that edge-information is preserved, but the blurriness of primitive edge-detection tools is removed.\nMore specifically, this works by checking each pixel in relation to its two neighbouring pixels (along the gradient-direction). If the pixel is the highest of the three, it is kept as part of the edge. If not, it is discarded (set to 0). \nTo do:\n\n\nCreate a new method:\npublic FloatProcessor nonMaxSuppress(FloatProcessor Grad, ByteProcessor Dir) {}\n\n\n\nCreate a new FloatProcessor to store the resulting image\n\n\nIterate through the gradient-image. Check the direction for each pixel and then evaluate whether or not it is a local maximum in gradient-direction.\n\n\nIf it is a local maximum, store the value in the output-FloatProcessor\n\n\nReturn the final FloatProcessor\n\n\n\n5.4: Hysteresis Thresholding\nHysteresis Thresholding is a special form of thresholding, which uses two threshold-values instead of one (upper and lower). Similar to standard thresholding, if a pixel's value falls above the upper threshold, it is kept as part of the image. If however, the pixel's value falls below, or is equal to the upper threshold, but above the lower threshold, the pixel is only kept as part of the image, if it is directly connected to a pixel above the upper threshold. Any pixel equal to or below the lower threshold is disregarded. \nTo do: \n\n\nCreate a new method: \npublic ByteProcessor hysteresisThreshold (FloatProcessor In, int upper, int lower){}\n\n\n\nSince you are working with a FloatProcessor and the values a pixel can have are not the easiest to work with, you can instead convert your input-values to percentages of the maximum value within the image. To do so, simply add: \nfloat tHigh = ((float)In.getMax()*upper)/100f;\nfloat tLow = ((float)In.getMax()*lower)/100f;\n\nYou can then use tHigh and tLow as your threshold values, while being able to define them through low integer numbers. As a starting point you can for example use 15 as upper and 5 as lower. Feel free to experiment around with these. \n\n\nCreate an output-ByteProcessor to store the final image \n\n\nIterate through the input image and check the threshold condition for each pixel. Set pixels above the upper limit to white in the output image \n\n\nIn order to check, whether a pixel above the lower threshold is connected to an existing edge, you will need to iterate through the image again and check the connections repeatedly, because a pixel can become connected to the edge through any number of adjacent pixels. \nTo avoid mistakes here, the following code, as well as the included hasNeighbours()-method will be provided. You can simply add this code after you performed the first iteration through the image.\n\nboolean changed = true;\nwhile (changed) {\n changed = false;\n for (int x = 0; x < In.getWidth(); x++) {\n for (int y = 0; y < In.getHeight(); y++) {\n if (In.getPixelValue(x, y) > tLow && hasNeighbours(Out, x, y) && Out.getPixel(x,y)==0) {\n Out.set(x, y, 255);\n changed = true;\n }\n }\n }\n }\n\n(Out refers to the output-image. If you named it differently, you can obviously change the code accordingly)\n\n\nReturn the output image\n\n\n\nAdd a simple user-dialog to the run-method, which allows you to select values for $\\sigma$, the upper threshold and the lower threshold.\nFinally perform the getDir,nonMaxSuppress and hysteresisThreshold steps in sequence within your run-method and display your final result.\n\n5.5: Project-Report\nThe part of your report concerning Task_5 should contain the following:\n\nA short description of what Canny-Edge-Detection aims to do and how it works\nIn which ways it is superior to the more primitive approaches\nImages you generated with your code. How do the parameters influence your results? \n\nNext\n","id":"https://mt2-erlangen.github.io/cannyedge/","title":"Project Work 5 - Canny Edge"},"https://mt2-erlangen.github.io/clearvolume/":{"body":"ClearVolume looks like this\n\nYou can integrate it into your development enviroment by adding this\nline to your gradle.build.\nimplementation 'sc.fiji:imglib-clearvolume:1.4.2'\n\nYou need to start ImageJ with (instead of (new ij.ImageJ()).exitWhenQuitting(true);)\n net.imagej.ImageJ ij = new net.imagej.ImageJ();\n ij.launch();\n\nI guess, this only works if you are running Java 1.8 (at least on my Linux machines)!\n\nWhat will always work, is to install Fiji and\nactivate ClearVolume under Help > Update... > Manage update sites and\nselect \"Clear Volume\"\n\nFiji also has many other PlugIns to view volumes.\nBack to volumes\n","id":"https://mt2-erlangen.github.io/clearvolume/","title":"ClearVolume Intregration"},"https://mt2-erlangen.github.io/conclusion/":{"body":"Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n6. Outlook and Conclusion\nCongratulations, you have now built all the tools needed to use the final provided plugin called User_Interface. \nIt allows you to play around with the different kinds of image-processing-techniques, you learned to apply over the course of this project.\nTools similar to those you implemented could for example be applied to facilitate or automate the diagnosis for radiologists.\nThere is therefore great research interest in segmentation, edge detection, and various similar processing methods.\nIn your report you should:\n\nName at least two examples of current trends in image processing. Provide citations for each example and describe them briefly.\nFor your examples, are they already applied to clinical routine? If not, do you think they soon will be? Try to explain why or why not.\n\nIn the last part, summarize what you have implemented and explained in your project report. Review the shortcomings of your approaches and how they could be mitigated in the future, and conclude your report.\n\nSubmission\nOnce you are finished with your code and satisfied with the results, please compress the entire src folder into a zip file and upload it to StudOn. \nAfterwards, write the report and submit the PDF file as well. \nThe deadline for submission is August 26th at 23:55 via StudOn. \nWe recommend that you submit earlier versions of your project to avoid accidentally missing the deadline. Only the last version will be considered.\nThank you for your time and interest! We look forward to reading your reports and hope to see you again for future lectures, projects, or theses! \nBest regards\nYour MT2-Team\n","id":"https://mt2-erlangen.github.io/conclusion/","title":"Project Work 6 - Outlook and Conclusion"},"https://mt2-erlangen.github.io/edgedetection/":{"body":"Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n4: Primitive Edge-Detection Filters\nSimilar to Thresholding and Segmentation, Edge-Detection is a commonly used technique in image processing (i.e. to descern boundarys of objects within an image etc.). In your project you will first be implementing a set of primitive edge-detection filters, as well as the more advanced Canny-Edge-Filter (Task 5). \n\n4.1: The Filter-Kernels\nThere are a variety of different Kernels used for edge detection; some of the most common ones are Sobel, Scharr, and Prewitt - Kernels.\n\nSobel:\nX-Direction: $\\begin{bmatrix}1&0&-1\\2&0&-2\\1&0&-1\\end{bmatrix}$ Y-Direction: $\\begin{bmatrix}1&2&1\\0&0&0\\-1&-2&-1\\end{bmatrix}$\n\nScharr:\nX-Direction: $\\begin{bmatrix}47&0&-47\\162&0&-162\\47&0&-47\\end{bmatrix}$ Y-Direction: $\\begin{bmatrix}47&162&47\\0&0&0\\-47&-162&-47\\end{bmatrix}$\n\nPrewitt:\nX-Direction: $\\begin{bmatrix}1&0&-1\\1&0&-1\\1&0&-1\\end{bmatrix}$ Y-Direction: $\\begin{bmatrix}1&1&1\\0&0&0\\-1&-1&-1\\end{bmatrix}$\n\nWhen applying these Filter-Kernels to an image through convolution, you essentially create the derivative of the image. \nThis is because these Kernels result in higher pixel-values in regions, where the image contains a sharp change in brightness (similar to derivatives in analysis). This \"derivation\" is performed in X- and Y-direction seperately.\nUsing both the X- and Y-derivative of an image, you can then generate the image-gradient by calculating the euclidean norm over both derivatives at each pixel of the image. \n\n$G$ = $\\sqrt{G_{x} ^ 2+G_{y} ^ 2}$\n\nThis image-gradient will then show the edges as bright and the rest of the image as black.\n\n4.2: Filtering and Gradient\nTo do:\n\n\nOpen the Task_4_Filters-class and create a new method: \npublic FloatProcessor applyFilter (FloatProcessor In, int[][] kernel){}\n\n\n\nCreate a new FloatProcessor to store the resulting image\n\n\nIterate through the input image and perform the convolution \n\n📝 Note: \nSince you are working with a 3x3 kernel, you can't simply iterate through the entire image because you would encounter OutOfBounds-exceptions when getting to the rim of the image. \nFor the sake of simplicity you can therefore ignore the outermost row/column of pixels.\n\t\n\n\nReturn the resulting image\n\n\n\nNow that your plugin can perform a convolution (and therefore a derivation), you can calculate the image-gradient.\nTo do: \n\n\nCreate a new method:\npublic FloatProcessor getGradient (FloatProcessor In_X, FloatProcessor In_Y){}\n\n(In_X and In_Y are the derivatives in X- and Y-direction respectively)\n\n\nCheck if the input-images have the same dimensions, if not throw a fitting exception\n\n\nCreate a new FloatProcessor to store the resulting image\n\n\nIterate through the image and calculate the Gradient value for each pixel in the output-image\n\n\nReturn the resulting image-gradient\n\n\n\n4.3: User-Dialog\nAt this point your plugin contains everything needed to perform primitive edge-detection. \nAs a final step you will implement a simple user-dialog, which will allow the user to select between the three filters mentioned above. \nThe following code should be implemented in the run-method\nTo do:\n\n\nCreate a new GenericDialog\n\n\nCreate a String-array:\nString[] Filters = {\"Sobel\",\"Scharr\",\"Prewitt\"};\n\n\n\nAdd a popup-menu to select which filter you want to use \n\n💡 Tip: Check the ImageJ-API to see how popup-menus are implemented \n\n\n\nShow the dialog\n\n\nCheck if the dialog was cancelled. If it was, terminate the plugin \n\n\nGet the index (in the popup-menu) of the selected filter\n\n\nPerform the edge-detection using the selected filter and the methods you implemented\n\n\nShow your result\n\n\n\n4.4: Project-Report\nThe part of your report concerning Task_4 should contain the following:\n\nA short description on how these primitive Edge-Detection-Filters work\nPossible limitiations, which would require a more sophisticated approach to edge-detection\nImages you generated with your code\n\nNext\n","id":"https://mt2-erlangen.github.io/edgedetection/","title":"Project Work 4 - Edge Detection"},"https://mt2-erlangen.github.io/img_transform_theory/":{"body":"Theoretical background\nImage Transformation\nOverview of image transformations\n\nTranslation\nRigid or Euclidean (Rotation, translation)\nSimilarity (Rotation, translation, scaling)\nAffine\nProjective\n\nConsider a point $\\mathbf{x}=(x,y)$ in the 2D space. Then\nwe can define translation, rotation and scaling\nusing the following equations which maps the points from $\\mathbf{x} \\to \\mathbf{x}'$ where $\\mathbf{x}' = (x',y)'$ is the new transformed coordinates.\nTranslation\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = x + t_x$\n$y' = y + t_y$.\n\nThis can also be written in vector notation as follows:\n\n$\\mathbf{x}' = \\mathbf{x} + \\mathbf{t}$ where $\\mathbf{t} = (t_x, t_y)$\n\n\nRotation\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = x cos\\theta + y sin\\theta$\n$y' = -x sin\\theta + y cos\\theta$\n\n\n\nScaling\n\nWe can define the translation in $x$ and $y$ direction as below\n\n$x' = sx$\n$y' = sy$.\n\n\n\n\nWe can also chain the different transformations and compute the transformed coordinate using a single equation\n$$x' = s (x \\cos\\theta + y \\sin\\theta ) + t_x$$\n$$y' = s(-x \\sin\\theta + y \\cos\\theta) + t_y$$\n\n\nIllustration of different transformation\n\nImage Source : Szeliski, Richard. Computer vision: algorithms and applications \n\nImage Source : Szeliski, Richard. Computer vision: algorithms and applications \nFor more details about image transformations, you can \nalso check out the computer vision book by Richard Szeliski. \nA free pdf is available on the website.\nImage interpolation\nLet us consider an example image\ntransformation. Initially we have an unit square with its left corner placed at the origin (0,0). Assume that we have image intensity values at the\ncorners of the unit square at a = (0,0), b =(0,1),\nc = (1,1), d = (0,1).\nWe apply a small translation $\\mathbf{t} = (0.5,0.5)$ to the square. As you can see in the image, now our left corner point is at $a' = (0.5,0.5)$.\nSince we don't have the value at this point we are forced to approximate the value from the information available to us. This is the main\nreason for implementing image interpolation function as image transformations can always lead to coordinates for which we don't have any value and we approximate the value using the neighbourhood information.\n\nThe way in which we use the neighbouring information governs the quality of the interpolated image. The different types of interpolation are as follows:\n\nNearest neighbour\nBilinear\nBi-cubic\n\nIllustration of different types of interpolation\nThe image below shows how the different types of interpolation works. The discrete points are the places where we know the function value and\nthe lines connecting these points represents the interpolated function values.\n\nImage Source : Wikipedia\nWe will implement only bilinear interpolation\nfor our Image class.\nLets dive a bit deeper into the bilinear\ninterpolation and look at the how the values are interpolated using this method.\nBilinear interpolation\n\nImage Source : Wikipedia\nConsider the above image where the red dots ($Q_{ij}$) indicate the discrete points where we know the function value. We want to approximate the function value at point $P$.\nConsider the points(red dots) in the above image:\n$$Q_{11} = (x_1,y_1), Q_{21} = (x_2,y_1)$$\n$$ Q_{12} = (x_1,y_2), Q_{22} = (x_2,y_2)$$\nAssume that each of these points $Q_{ij}$ corresponds to an image pixel with intensity values.\nNow we need to find the image intensity value at point $P= (x,y)$ which is in between the points $Q_{ij}$\nLet us consider one coordinate at\na time (i.e. $x_i$ or $y_i$) for interpolation.\nHere we intially interpolate along the $x$-axis.\nSo now our aim is to find values at $P(x,y_i)$.\n(i.e. find intermediat values $R_i (x,y_i)$. We have two values of $y_i$ so we can find two intermediate values.)\nWe can obtain two such values by interpolating along\n$Q_{11}, Q_{21}$ and find out the intermediate value as $R_1$ and between $Q_{12}, Q_{22}$ and find out the intermediate value $R_2$.Look at the image of how we just interpolate along the line.\nWe can directly use the linear interpolation equation to find out the values of $f(R_1)$ and $f(R_2)$\n$$ \\frac{f(x) - f(x_1)}{x-x_1} = \\frac{f(x_2) - f(x_1)}{x_2 - x_1} $$\nOnce we have the values at $R_1 = (x,y_1)$ and $R_2 = (x,y_2)$ we can again use the same linear interpolation formula along the $y$-axis and find the function value $f(P)$ at $P=(x,y)$.\nThis way we can interpolate(approximate) any values (x,y) if we know the neighbouring values. However when we actually implement the method we also need to find out the neighbouring values on our own as they are not provided.\n","id":"https://mt2-erlangen.github.io/img_transform_theory/","title":"Image transformation theory"},"https://mt2-erlangen.github.io/import_eclipse/":{"body":"\n\nOn Windows, macOS download the latest Java version 15 from Oracle.\nOn Ubuntu Linux, you can install sudo apt install openjdk-14-jdk or sudo apt install openjdk-11-jdk.\nAt least Java 8 is required. If you have a working installtion from AuD, you can skip this step.\n\n\nInstall Eclipse from https://www.eclipse.org/downloads/\n\n\nOpen Eclipse \n\n\n\nImport...\n\n\n\nExisting Gradle Project...\n\n\n\nChose path of the downloaded project and click Next (it must be the folder that contains build.gradle)\n\n\n\nGrab a coffee while it's downloading ImageJ\n\n\n\nTry to run Exercise00\n\n\n\nYou are seeing red squiggles, you found a bug in a Eclipse plugin. Upgrade it in the Eclipse Marketplace! \nUpdate: I think this bug is resolved on new Eclipse versions. So you don't have to upgrade \"Buildship Gradle Integration\" on new versions!\n\n\n\nSearch for gradle build! Then, click on the Installed button of \"Buildship Gradle Integration\".\n\n\n\n... and click on Update! This should solve the bug after a restart.\n\n\n\nYou should now see ImageJ when you start Exercise01.\n\n\n\nIf you're still facing problems: please also check whether a valid Java Runtime Enviroment was found by right-clicking on the project folder\n(if it still has red crosses). Select Properties -> Java Build Path. Sometimes Eclipse does not find your Java\ninstallation. You can select it there.\n\n\n\nStill facing problems? Are you sure you imported the folder that contains build.gradle.\nIf you imported a subfolder or a folder that contain the folder that contains build.gradle, Eclipse will be very confused\nbut does not yield an error.\nBack to exercise 00\n","id":"https://mt2-erlangen.github.io/import_eclipse/","title":"Import a Gradle project with Eclipse"},"https://mt2-erlangen.github.io/import_intellij/":{"body":"\n\nOn Windows, macOS download the latest Java version 15 from Oracle.\nOn Ubuntu Linux, you can install sudo apt install openjdk-14-jdk or sudo apt install openjdk-11-jdk.\nAt least Java 8 is required.\n\n\nYou can get IntelliJ from here. There's a free community edition and you can also \nunlock the Ultimate Edition when applying with your FAU email adress here.\n\n\nStart IntelliJ and select \"Open or Import\"\n\n\n\n\n\nSelect the downloaded folder\n\n\n\nWait until all dependencies are downloaded\n\n\n\nPlease make sure you enable auto-compilation: https://www.jetbrains.com/help/idea/migrating-from-eclipse-to-intellij-idea.html#compilation\n\n\nBack to exercise 00\n","id":"https://mt2-erlangen.github.io/import_intellij/","title":"Import a Gradle project with IntelliJ"},"https://mt2-erlangen.github.io/installation/":{"body":"Project Setup:\nSince you have been working with IntelliJ throughout the entire semester when working on your exercises, you should already have it installed on the device you intend to use. \nIf not, have a look at the setup-guide you were given at the beginning of the Semester and install it accordingly.\nThe setup for this project will work very similar to the setup for your exercises.\nIf you encounter any problems while setting up, feel free to ask your tutors. \nTo do: \n\n\nDownload the project template from Github. \n\n\n\nUnpack the zip-file and be sure to select the file-destination such that it is not unpacked \"into its own folder\" (meaning that there would be a MT2-project-ImageProcessing-folder within the MT2-project-ImageProcessing-folder) as might be the case by default.\n\n\n\nOpen IntelliJ and click (File) → Open → MT2-project-ImageProcessing\nand hit ok to open the empty project template. \nMake sure to select the entire MT2-project-ImageProcessing-folder and not one of the folders contained within. \n\n\n\nNavigate to File → Project Structure → Project and select jbr-17 or 17 or a similar SDK. \nThe SDK that works for you may vary depending on your device and the IntelliJ version you are using. If you have been working on your exercises, simply use the one that worked for you when setting up initially. \n\n\n\nNavigate to File → Project Structure → Modules → Paths.\nCheck, that Use module compile output path is selected and that the\nplugins-folder contained in the is selected as the destination. If this is set\nincorrectly, simply use the folder-icon towards the right of the path to navigate to\nthis folder and select it.\n\n\n\nIn the same window select Libraries and make sure that ij is listed.\nIf it is missing, add it by hitting + → Java and selecting the ij.jar file that is contained within your project.\n\n\nAfter concluding these steps, your project structure should look something like this:\n\n\nYou should now be able to build your project without any errors. \n\n\n\n\n\nYou can now right-click on the ij.jar-file in your project structure and select Run 'ij.jar'. This should open the ImageJ interface. Check the Plugins-dropdown-menu. It should look like this: \n\n\n\n\nSimilar to the intitial exercise-setup, you should be able to run the included Setup_Test- Plugin and the message should pop up. \nOnce you are done with this and everything is working nicely, you can get started with working on your first task. \nGeneral Info:\nImageJ\nThe image processing program we want to use during this semester is called ImageJ.\nIt was developed at the US National Institutes of Health and is used nowadays especially in research\nfor medical and biological images.\nIf you want to, you can download a stand-alone version of the program here.\nThis is not necessary for the exercises.\nDebugging\nEverything here should just be a recap of what you know about debugging from the exercises. Feel free to skip if you know how debugging works!\nTo do the project during this semester, you will often need to use the debug mode to find errors in your code.\nPlease make sure that you know how to run your program in debug mode, since you might not have seen it before (Shame on you AuD!).\nPlease always try to debug an issue first before you ask a tutor for help!\nTo debug an application just click on the bug symbol! You can try this with file src/main/java/exercises/DebugExample.java.\n\n\nAlso set some breakpoints (where the program should stop) by clicking on the space left to the line numbers.\n\n\nA Breakpoint. The program will stop here in debug mode.\n\nYou should also know how to make the debugger stop on an exception (to see what's wrong when the program is crashing).\nThere is a bug in program! When you run it, you should see a crash:\n\nIntelliJ suggests to create a break point. Click Create breakpoint!\n\nConfirm with Done.\n\nWhen you run the program again in debug mode it will stop at the line where the error happened.\nThis will help you to find out what is wrong at that point.\nAlso Eclispe will stop automatically and indicate what the problem is (if it doesn't please upgrade to the newest version of Eclispe):\n\nVery useful is also the calculator symbol, that let's you evaluate expressions.\nIf you don't know, what is wrong in a line, you can tell the calculator to the termine the value of a or a.x to determine which one\nis null (or of very.complicated.expression[2] when things get more complicated and a variable is not shown in the list below).\n\nIn Eclipse, the calculator are a pair of glasses (make sure you are in debug perspective, menu: Window > Perspective > Open Perspective > Debug).\n\nNow you should be well prepared for the project!\n","id":"https://mt2-erlangen.github.io/installation/","title":"Installation"},"https://mt2-erlangen.github.io/introduction/":{"body":"Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\nDisclaimer\nThis is a short introduction with general information and best practices including project report guidelines. Thoroughly read it and stricly follow all rules. We have also prepared a video with all necessary information about the report. \nWe provide you with a basic java template including some useful helper functions. You have to use this template as the starting point of your project. For more information on the installation have a look at our getting started guide.\nFurthermore, we provide a latex-template that you should use. It gives a more detailed structure for the report. Don't change the order and replace all images with images generated from your own implementation.\nIn case you are working on CIP machines you may run into quota issues. You can fix these issues with our guide.\nPlease also note that you can connect remotely to CIP machines using a remote SSH connection\nIntroduction:\nThis project aims to introduce you to some fundamental image-processing-techniques which find application in a large variety of fields. \nSince you are studying to become biomedical engineers, you will mainly be working with an image of cells, as a simple example of images you might encounter over the course of your scientific career.\n\nThe techniques you will be working with are the following: \n\nBasic Thresholding / image-segmentation\nEvaluation of your segmentation\nOtsu-Segmentation\nPrimitive edge-detection\nCanny edge-detection\n\nBy the end of this project, you will have built a set of ImageJ-Plugins that are capable of performing all of these operations. In addition to that, you will be documenting your progress and results in the form of a written Project-Report. \nThis is why at the end of every task you will find a number of bullet-points detailing which topics you should include in your report. \nThe coding section of your project will be written in Java using IntelliJ as the editor of choice. You should already be familiar with coding in IntelliJ from lectures like AuD-MT as well as from your MT2 computer-exercises.\nYour written project report will be written in LaTeX using the online editor Overleaf. \nGeneral Information\nThe project report, as well as the coding, are individual work. As such, you need to submit them individually. Also, do not use any built-in methods that we do not specifically allow.\nNote: we'll check for plagiarism.\nReport Guidelines\nThe project report can be written in either English or German. Please write between 4 and 7 pages of text, not counting the images.\nWe expect you to:\n\n\nUse the LaTeX template we provide\n\nLaTeX template link\nDo not modify the style or the formatting. No ornaments for page numbers!\nThe template defines the overall structure of your project. You have to fill in all the gaps.\nDo not change the order of the sections in our template.\nDo not change the titles of sections or subsections.\nDo not change the order of the figures in the project. You can optionally add new figures to the report.\nWe will only count answers that appear in the correct subsection of the report. If you want to avoid repeating yourself, use \\label{} and \\ref{}.\nThe template contains examples for all commands necessary for the report. It is allowed to import and use other packages if desired. \n\n\n\nUse scientific references in your explanations to clearly separate your work from the work of others:\n\nUse the bibliography (see template Bib/bibliography.tex) and keep the citation style provided in the template.\nThe bibliography must be sorted (either alphabetically when using the Name/Year citation style or\nby the order you use them in the text when numbering the sources).\nDo not use more than two references that are websites only. \n\n\n\nAll symbols in equations need to be explained in the text.\n\n\nAll equations, figures and tables, if applicable, have to be numbered and referenced in the text.\n\nAll your figures should look professional.\nThey should not be blurry or hand-drawn and images should not have a window border of ImageJ.\nThey should not overlap with the text.\nAll figures need to have captions giving a brief description what the figure shows. The caption should be below the figure.\nLabel all axes in all plots and coordinate systems!\nA list of figures is not needed.\nReplace the images in the report template with images from your own implementation applied to knee data.\n\n\n\nDo not use abbreviations without introducing them. E.g., the first time you should write \"Magnetic Resonance Imaging (MRI)\".\nAfter that, \"MRI\" is enough.\n\n\nJust like in storytelling, connect the context of the project report, so everyone can see the flow.\n\n\nDo not use footnotes!\n\n\nCheck your spelling: there shouldn't be any obvious spelling errors that can be detected by a spell checker.\n\n\nTo obtain all the points for the content of your report, additional to the above\n\nCheck whether you have addressed all the questions in the task description.\nCheck whether you have provided all the result figures and a detailed explanation of them.\n\nGuidelines for the Use of Writing Assistants\nWe welcome students to use writing assistants to enhance the quality of the written report. However, we would like to point out that\nstudents are responsible for the correctness of the content, and that scientific references are mandatory to verify all the claims made in the report.\nIf you decide to use any writing assistant, we ask you to add the tool to the list of references.\nThe use of spell-checking and translation software is encouraged and can be done without adding them to the list of references.\nNext\n","id":"https://mt2-erlangen.github.io/introduction/","title":"Project Work 0 - Introduction"},"https://mt2-erlangen.github.io/otsu/":{"body":"Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n3: Otsu's Method\nOtsu's method is a commonly used algorithm to compute the ideal threshold-value for image-segmentation. It is used in cases where the image-histogram is bimodal (meaning it contains two distinct peaks) to find the ideal \"middle ground\". \nWe highly recommmend that you have a look at the original publication from 1975 regarding the algorithm (Access should be granted if you try to access it using the university internet).\n\n3.1: Theory\nOtsu's method works by maximizing the between class variance σB² which is defined as:\n\nσB2 (θ) = P1(θ) \t· P2(θ) · (μ1(θ) - μ2(θ))2 \nwith\nP1(θ) = $\\sum_{i = 0}^{\\theta} h(i)$ (≙ number of pixels below the threshold (background))\nP2(θ) = 1 - P1(θ) = $\\sum_{i = \\theta +1}^{L-1} h(i)$ (≙ number of pixels above the threshold (foreground))\nμ1(θ) = $\\frac{1}{P1(\\theta)}$ $\\cdot$ $\\sum_{i = 0}^{\\theta} (i+1)h(i)$ (≙ mean intensity of the background)\nμ2(θ) = $\\frac{1}{P2(\\theta)}$ $\\cdot$ $\\sum_{i = \\theta +1}^{L-1} (i+1)h(i)$ (≙ mean intensity of the foreground)\n\nwith h(i) being the normalized histogram of the image, θ being the current threshold and L being the length of the histogram-array.\n\n3.2: Coding\nIn order to implement this algorithm, you will need to:\n\nGenerate the histogram of the image\nUse the histogram to determine P1(θ) and P2(θ) for all possible θ's\nUse these values to calculate μ1(θ) and μ2(θ) for all possible θ's\nCalculate σB² (θ) for all possible θ's\n\nMoving foreward, these steps will be explained in further detail. \nSince your code for this task can get rather long, you should pay attention to an orderly programming style to avoid difficulties while debugging later on. You can also add comments to your code to help you keep track of your work. \nTo do:\n\nOpen the Task_3_Otsu-class and take note of the empty methods provided. Each of these methods will be performing one of the calculations detailed above. \n\n \n\n\nComplete the method:\n public double[] getHistogram(ImageProcessor in) {}\n\na. Create a double-array of appropriate size to store the histogram-values\nb. Iterate through the input-image and update the corresponding histogram-entry for each pixel's value\nc. Normalize and return the histogram. \n\n\n\n 📝 Note: \n Normalizing refers to converting the histogram to a probability distribution. If you are unsure how to do that, have a look at the original publication \n\n\n\n\nComplete the methods to compute P1(θ), P2(θ), μ1(θ) and μ2(θ):\npublic double[] getP1(double[] histogram){}\npublic double[] getP2(double[] P1){}\npublic double[] getMu1(double[] histogram, double[] P1){}\npublic double[] getMu2(double[] histogram, double[] P2){}\n\nP1(θ) and P2(θ):\n\n\nConsider which values for θ are possible in an 8-bit grayscale image\n\n\nIterate through the possible values of θ and calculate P1(θ) and P2(θ) for each instance \n\n\n\nμ1(θ) and μ2(θ):\n\nCalculate the values for μ1(θ) and μ2(θ) according to the formulas provided above. \n\n\n📝 Note: \nPay attention to the possibility of dividing by zero.\nYou can handle this, by checking beforehand, if you will be dividing by zero and simply dividing by a very small number instead. We recommend you use 10e-10\n\n\n\n \n\nDetermine the values for σB² (θ) in the method: public double[] getSigmas(double[] P1, double[] P2, double[] mu1, double[] mu2) {}\n\na. Create a new double-array of suitable length\nb. Calculate σB² (θ) for each value of θ and store it in the array you just created\nc. Return the array of sigmas\n\n \n\n\nFind the maximum of your sigmas-array using:\n public int getMaximum(double[] sigmas){}\n\nDetermine the index (within the array of possible σ's) of the maximum value for σB² (θ) and store the index as an int-variable\n(In case there is no definite maximum, you can simply select the σ with the highest index, as this adds the least amount of extra programming)\nThe maximum value this method returns is your Otsu-Threshold-Value\n\n\n\n\n\nComplete the method: \npublic ByteProcessor otsuSegmentation(ImageProcessor ip) {}\n\nThis method will combine all the steps for calculating the Otsu-Threshold, as well as return the Image after having applied the Otsu-Threshold and print the determined value to the terminal. \n\na. First apply an illumnation-correction to the input image. To do this, inherit the methods you implemented in Task_1 by using:\nTask_1_Threshold Threshold = new Task_1_Threshold();\n\nYou can call methods belonging to the Threshold-Object like this: Threshold.correctIllumination().\nb. Use the \"illumination-corrected\" image to perform all of the calculations you implemented \nc. Apply a Thresholding-operation to your image using the determined Otsu-Threshold and store the result in a ByteProcessor. \nd. Print the Otsu-Threshold to the terminal and return the result-ByteProcessor\n\n\n\nComplete the run-method such that it applies the Otsu-Segmentation-Process to the Input-Image and displays the resulting image.\n\n\nTo check your code you can perform an Otsu-Segmentation of the \"Cells\"-image.\nYour plugin should return the following: \n\n\n3.3: Project-Report\nThe part of your report concerning Task_3 should contain the following:\n\nA brief explanation of what Otsu's method is\nWhat it aims to achieve and how \nIts limitations\nExample of your segmentation\nIn the original publication, Otsu mentions that \"An optimal threshold is selected automatically and stably, not based on the differentiation (i.e. a local property such as valley), but on the integration (i.e., a global\nproperty) of the histogram.\" Explain what this means, especially where the integration comes from. \nCompare the results to the naive thresholding method \nOtsu's method, while still applied and useful in practice, has several shortcomings. Discuss two of them and name examples of current methods that can be applied to similar problems that solve these issues, by providing a citation and briefly explaining them. \n\nNext\n","id":"https://mt2-erlangen.github.io/otsu/","title":"Project Work 3 - Otsu"},"https://mt2-erlangen.github.io/quota/":{"body":"Step by Step Guide\n\n\n\nOpen terminal \n\n\nType: \nmkdir -p /proj/ciptmp/REPLACE_WITH_YOUR_IDM/mt2\nmkdir Desktop/tmp\nln -s /proj/ciptmp/REPLACE_WITH_YOUR_IDM/mt2 Desktop/tmp/mt2\n\n\nYou have just created a symbolic link on your desktop that points to a directory where you have a soft quota of 8GB. Download the project from Github and extract it into Desktop/tmp/mt2\n\n\nOpen Intelij\n\n\nIn the menu bar click on File -> open -> Desktop/tmp/mt2/project_ss2024\n\n\nBuild project \n\n\n\n","id":"https://mt2-erlangen.github.io/quota/","title":"Quota Problems"},"https://mt2-erlangen.github.io/segmentation/":{"body":"Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n2: Segmentation\nFor your second task, you will be implementing a plugin, which will be capable of evaluating the quality of a segmentation by comparing it to a given reference-image. In clinical practice these reference images can be attained through manual segmentation of the image by a skilled physician.\nIn your case the provided reference image will look like this:\n\n\n2.1: A new class\nIn order to quantify the quality of your segmentation, you will be calculating the values for Sensitivity and Specificity, which were introduced in your blackboard-exercise. In addition, you will be creating a dedicated class to store and access these values. \nTo do:\n\nCreate a new class in the src-Folder named EvaluationResult \nCreate the class-variables sensitivity and specificity (both double)\nImplement a constructor:public EvaluationResult ( double specificity , double sensitivity ){}\n\n\nImplement getter-methods for both values: public double getSpecificity (){}\n public double getSensitivity (){}\n\n\n\n\n2.2: The Plugin\nThe rest of the code for this task will be implemented in the provided class Task_2_EvaluateSegmentation.\nIn order to calculate the values for Sensitivity and Specificity, you will need to assign a \"state\" to each pixel of your segmented image. The states in question are:\nState\nTP\"True Positive\" → the pixel was correctly identified as part of the target\nTN\"True Negative\" → the pixel was correctly identified as background\nFP\"False Positive\" → the pixel was falsely identified as part of the target\nFN\"False Negative\" → the pixel was falsely identified as background\n\nFor decerning which of these cases applies to a given pixel, the reference image is used as the \"correct\" segmentation.\nThe values for Sensitivity and Specificity can then be calculated as follows: \n\n Sensitivity = TP/(TP+FN) \n Specificity = TN/(TN+FP) \n\nTo do:\n\nCreate a new method: private EvaluationResult evaluateSegmentation ( ImageProcessor\n segmentation , ImageProcessor reference ){}\n\n\nCheck if both images have the same dimensions - if not return null\nIterate over both images and count up the number of occurrances for each state \nCalculate the values for Sensitivity and Specificity using the formulas listed above\nCreate a new EvaluationResult-object to store these values and return it\n\n\nNow that you have created a method which perfroms the actual evaluation, you will need to implement the run-method in order to apply the plugin to an image. \nTo do:\n\n\nUse the IJ.openImage()-method to open a window, which allows the user to select the reference image.\n\n\nCheck wether the reference image has been loaded successfully - if not throw a fitting exception\n\n💡 Tip: \nCheck the ImageJ-API to see how the method behaves when no image has been loaded\n\n\n\nOnce the image was loaded successfully, apply your evaluateSegmentation()-method and print your results\n\n📝 Note: \nAs a test for your code, you could for example choose the cells_reference image as both \"segmentation\" and \"reference\". The plugin should then return 1.0 for both values.\n\n\n\n\n2.3: Project-Report\nThe part of your report concerning Task 3 should contain the following:\n\nA brief explanation as to what TP, TN, FP, FN mean\nThe formulas for Specificity and Sensitivity\nA brief explanation on what Specificity and Sensitivity mean in the context of image-segmentation\n\nAdditionally you should also include your own results from this exercise:\n\nUsing your plugin from Task 1 generate 6 different segmentations of the \"cells\"-image using approapriate hyperparamters. \nUse the plugin you implemented in this task to evaluate each segmentation \nDisplay your results in an appropriate way \nName two other ways to evaluate how good the segmentation is\n\nNext\n","id":"https://mt2-erlangen.github.io/segmentation/","title":"Project Work 2 - Segmentation"},"https://mt2-erlangen.github.io/set_args_eclipse/":{"body":"Set Program Arguments in Eclipse\nGo to Run Configurations...\n\nCreate a New launch configuration with main class exercises.Exercise02\n\nSet the arguments with the file name in quotes: \"path to your data set file\" (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat). Don't forget the quotes!\n\nClick Run!\n","id":"https://mt2-erlangen.github.io/set_args_eclipse/","title":"Set Program Arguments in Eclipse"},"https://mt2-erlangen.github.io/set_args_intellij/":{"body":"Set Program Arguments in IntelliJ\nSelect Run... in the menu Run.\n\nSelect Edit configurations...\n\nFill in the form with main class exercises.Exercise02 and your file name of the file that you want to open (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat) as programm arguments in quotes!\n\n","id":"https://mt2-erlangen.github.io/set_args_intellij/","title":"Set Program Arguments in IntelliJ"},"https://mt2-erlangen.github.io/thresholding/":{"body":"Overview\n\nIntroduction\nThresholding\nSegmentation\nOtsu's Method\nEdge Detection \nCanny Edge \nOutlook and Conclusion\n\n1: Thresholding and Illumination-Correction\n1.1: Introduction\nYour first task consists of implementing an ImageJ-Plugin capable of performing a classic thresholding operation, as well as correcting for uneven illumination within an image. \nTo get you started, you have been provided with an incomplete class called Task_1_Threshold. \n\n1.2: Thresholding\nThe concept of thresholding - as the name implies - is based on evaluating an image pixel by pixel and checking each time, whether it falls above or below a given threshold-value.\nIf the pixel value in question is above the specified value, it will be set to white. If not it will be set to black. \nTo do:\n\n\nCreate a new method:\npublic ByteProcessor threshold ( ImageProcessor ip , int threshold ){} \n\n\n\nCreate a new ByteProcessor to store your result\n\n\nIterate over the entire input image and check the threshold-condition for each pixel\n\n\nSet each pixel in the output - ByteProcessor according to your evaluation\n\n\nReturn your result\n\n\n\n 📝 Note: \n Do not use inbuilt methods provided by ImageJ to perform the thresholding operation \n \n\n1.3: Illumination-Correction\nFor cases where the illumination of the image is uneven, you will now add the functionality to perform Illumination-Correction.\nTo do:\n\n\nCreate a new method:\npublic ByteProcessor correctIllumination ( ImageProcessor ip ){}\n\n\n\nConvert the input image to a FloatProcessor (make sure, that the original image remains unchanged)\n\n\nApply a Gaussian Filter to the newly created image ($\\sigma$ = 75) by using the blurGaussian()-function provided by ImageJ.\n\n\nDivide the original image by the filtered image (result should also be a FloatProcessor)\n\n\nConvert your result to a ByteProcessor and return it\n\n\n\n 💡 Tip: \nThe division of two images can simply be performed by iterating over them and performing it \"pixelwise\". \nThere is however a method provided by ImageJ, which allows you to move (copy) the entire image-data of one image to another, while applying a simple operation (such as division) to every pixel of both images in one go. Check the ImageJ-API in case you want to use this method.\n\n\nTo allow you to test your results, the run-method already contains code for a simple user interface, which gives you the option to select a value for your threshold, as well as let you choose whether or not you want to correct the illumination before thresholding. This code has been commented out to avoid causing errors by calling methods you had not implemented yet.\nIt pays to have a look at this code now, as you will eventually be creating a few dialogues of your own in later tasks.\nConsider using the \"Cells\" image to try out your code, since it will be the image you will be working with for the rest of your project. \n\n1.4: Project Introduction\nTo begin the written section of your Final Project, you will first need to come up with an introduction. This introduction should:\n\nCapture the readers interest with a short motivation of the project \nSummarize and contextualize the approach to other research methods\nPosition your approach with respect to other approaches\nDefine the research problem and problem statement\nGive an overview of the paper's structure\n\n1.5: Project-Report\nThe part of your report concerning Task_1 should contain the following:\n\nA brief description of the methods you implemented\nProvide a mathematically sound formulation of the thresholding operation\nA short discussion on why it may be necessary to correct the illumination in microscopy-images\nImages you generated with your code, that showcase what you described \nCreate a figure that shows a few examples of the image before and after thresholding. What does correctIllumination do? \n\nNext\n","id":"https://mt2-erlangen.github.io/thresholding/","title":"Project Work 1 - Thresholding"}},"docInfo":{"https://mt2-erlangen.github.io/":{"body":0,"title":0},"https://mt2-erlangen.github.io/appendix/":{"body":455,"title":3},"https://mt2-erlangen.github.io/archive/":{"body":2,"title":1},"https://mt2-erlangen.github.io/archive/2020/":{"body":26,"title":2},"https://mt2-erlangen.github.io/archive/2020/backprojection/":{"body":555,"title":4},"https://mt2-erlangen.github.io/archive/2020/checklist/":{"body":189,"title":3},"https://mt2-erlangen.github.io/archive/2020/clearvolume/":{"body":53,"title":2},"https://mt2-erlangen.github.io/archive/2020/exercise-1/":{"body":583,"title":2},"https://mt2-erlangen.github.io/archive/2020/exercise-2/":{"body":828,"title":2},"https://mt2-erlangen.github.io/archive/2020/exercise-3/":{"body":868,"title":2},"https://mt2-erlangen.github.io/archive/2020/exercise-4/":{"body":1028,"title":2},"https://mt2-erlangen.github.io/archive/2020/exercise-5/":{"body":631,"title":2},"https://mt2-erlangen.github.io/archive/2020/exercise-6/":{"body":269,"title":2},"https://mt2-erlangen.github.io/archive/2020/img_transform_theory/":{"body":440,"title":3},"https://mt2-erlangen.github.io/archive/2020/import_eclipse/":{"body":112,"title":4},"https://mt2-erlangen.github.io/archive/2020/import_intellij/":{"body":55,"title":4},"https://mt2-erlangen.github.io/archive/2020/introduction/":{"body":120,"title":4},"https://mt2-erlangen.github.io/archive/2020/projection/":{"body":693,"title":4},"https://mt2-erlangen.github.io/archive/2020/reconstruction/":{"body":309,"title":6},"https://mt2-erlangen.github.io/archive/2020/set_args_eclipse/":{"body":32,"title":4},"https://mt2-erlangen.github.io/archive/2020/set_args_intellij/":{"body":28,"title":4},"https://mt2-erlangen.github.io/archive/2020/sinogram/":{"body":68,"title":4},"https://mt2-erlangen.github.io/archive/2020/volume/":{"body":382,"title":4},"https://mt2-erlangen.github.io/archive/WS2021/":{"body":17,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/checklist/":{"body":189,"title":3},"https://mt2-erlangen.github.io/archive/WS2021/clearvolume/":{"body":53,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/conclusion/":{"body":100,"title":5},"https://mt2-erlangen.github.io/archive/WS2021/evaluation/":{"body":181,"title":5},"https://mt2-erlangen.github.io/archive/WS2021/exercise-1/":{"body":583,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/exercise-2/":{"body":828,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/exercise-3/":{"body":868,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/exercise-4/":{"body":1028,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/exercise-5/":{"body":631,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/exercise-6/":{"body":269,"title":2},"https://mt2-erlangen.github.io/archive/WS2021/img_transform_theory/":{"body":440,"title":3},"https://mt2-erlangen.github.io/archive/WS2021/import_eclipse/":{"body":112,"title":4},"https://mt2-erlangen.github.io/archive/WS2021/import_intellij/":{"body":55,"title":4},"https://mt2-erlangen.github.io/archive/WS2021/introduction/":{"body":105,"title":4},"https://mt2-erlangen.github.io/archive/WS2021/otsu/":{"body":240,"title":5},"https://mt2-erlangen.github.io/archive/WS2021/postprocessing/":{"body":223,"title":5},"https://mt2-erlangen.github.io/archive/WS2021/set_args_eclipse/":{"body":32,"title":4},"https://mt2-erlangen.github.io/archive/WS2021/set_args_intellij/":{"body":28,"title":4},"https://mt2-erlangen.github.io/archive/WS2021/volume/":{"body":381,"title":4},"https://mt2-erlangen.github.io/cannyedge/":{"body":743,"title":5},"https://mt2-erlangen.github.io/clearvolume/":{"body":53,"title":2},"https://mt2-erlangen.github.io/conclusion/":{"body":156,"title":5},"https://mt2-erlangen.github.io/edgedetection/":{"body":377,"title":5},"https://mt2-erlangen.github.io/img_transform_theory/":{"body":440,"title":3},"https://mt2-erlangen.github.io/import_eclipse/":{"body":154,"title":4},"https://mt2-erlangen.github.io/import_intellij/":{"body":65,"title":4},"https://mt2-erlangen.github.io/installation/":{"body":412,"title":1},"https://mt2-erlangen.github.io/introduction/":{"body":479,"title":4},"https://mt2-erlangen.github.io/otsu/":{"body":549,"title":4},"https://mt2-erlangen.github.io/quota/":{"body":41,"title":2},"https://mt2-erlangen.github.io/segmentation/":{"body":335,"title":4},"https://mt2-erlangen.github.io/set_args_eclipse/":{"body":32,"title":4},"https://mt2-erlangen.github.io/set_args_intellij/":{"body":28,"title":4},"https://mt2-erlangen.github.io/thresholding/":{"body":342,"title":4}},"length":58},"lang":"English"};
\ No newline at end of file
diff --git a/search_min.js b/search_min.js
new file mode 100644
index 00000000..601ddfef
--- /dev/null
+++ b/search_min.js
@@ -0,0 +1 @@
+async function lazyLoad(){await init("/tinysearch_engine_bg.wasm")}var loaded=!1;function autocomplete(e){var t;function n(e){if(!e)return!1;!function(e){for(var t=0;t=e.length&&(t=0),t<0&&(t=e.length-1),e[t].classList.add("autocomplete-active")}function a(t){for(var n=document.getElementsByClassName("autocomplete-items"),a=0;a-1&&a&&a[t].click())})),document.addEventListener("click",(function(e){a(e.target)}))}let wasm;autocomplete(document.getElementById("tinysearch"));let WASM_VECTOR_LEN=0,cachedTextEncoder=new TextEncoder("utf-8");const encodeString="function"==typeof cachedTextEncoder.encodeInto?function(e,t){return cachedTextEncoder.encodeInto(e,t)}:function(e,t){const n=cachedTextEncoder.encode(e);return t.set(n),{read:e.length,written:n.length}};let cachegetUint8Memory=null;function getUint8Memory(){return null!==cachegetUint8Memory&&cachegetUint8Memory.buffer===wasm.memory.buffer||(cachegetUint8Memory=new Uint8Array(wasm.memory.buffer)),cachegetUint8Memory}function passStringToWasm(e){let t=e.length,n=wasm.__wbindgen_malloc(t);const a=getUint8Memory();let o=0;for(;o127)break;a[n+o]=t}if(o!==t){0!==o&&(e=e.slice(o)),n=wasm.__wbindgen_realloc(n,t,t=o+3*e.length);const a=getUint8Memory().subarray(n+o,n+t);o+=encodeString(e,a).written}return WASM_VECTOR_LEN=o,n}const heap=new Array(32);function getObject(e){return heap[e]}heap.fill(void 0),heap.push(void 0,null,!0,!1);let heap_next=heap.length;function dropObject(e){e<36||(heap[e]=heap_next,heap_next=e)}function takeObject(e){const t=getObject(e);return dropObject(e),t}export function search(e,t){return takeObject(wasm.search(passStringToWasm(e),WASM_VECTOR_LEN,t))}let cachedTextDecoder=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});function getStringFromWasm(e,t){return cachedTextDecoder.decode(getUint8Memory().subarray(e,e+t))}function addHeapObject(e){heap_next===heap.length&&heap.push(heap.length+1);const t=heap_next;return heap_next=heap[t],heap[t]=e,t}function init(e){let t;void 0===e&&(e=import.meta.url.replace(/\.js$/,"_bg.wasm"));const n={wbg:{}};if(n.wbg.__wbindgen_json_parse=function(e,t){return addHeapObject(JSON.parse(getStringFromWasm(e,t)))},"function"==typeof URL&&e instanceof URL||"string"==typeof e||"function"==typeof Request&&e instanceof Request){const a=fetch(e);t="function"==typeof WebAssembly.instantiateStreaming?WebAssembly.instantiateStreaming(a,n).catch(e=>a.then(t=>{if("application/wasm"!=t.headers.get("Content-Type"))return console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e),t.arrayBuffer();throw e}).then(e=>WebAssembly.instantiate(e,n))):a.then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,n))}else t=WebAssembly.instantiate(e,n).then(t=>t instanceof WebAssembly.Instance?{instance:t,module:e}:t);return t.then(({instance:e,module:t})=>(wasm=e.exports,init.__wbindgen_wasm_module=t,wasm))}export default init;
diff --git a/segmentation/index.html b/segmentation/index.html
new file mode 100644
index 00000000..00700f00
--- /dev/null
+++ b/segmentation/index.html
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Project Work 2 - Segmentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
For your second task, you will be implementing a plugin, which will be capable of evaluating the quality of a segmentation by comparing it to a given reference-image. In clinical practice these reference images can be attained through manual segmentation of the image by a skilled physician.
+
In your case the provided reference image will look like this:
+
+
+
2.1: A new class
+
In order to quantify the quality of your segmentation, you will be calculating the values for Sensitivity and Specificity, which were introduced in your blackboard-exercise. In addition, you will be creating a dedicated class to store and access these values.
+
To do:
+
+
Create a new class in the src-Folder named EvaluationResult
+
Create the class-variables sensitivity and specificity (both double)
+
Implement a constructor:
public EvaluationResult ( double specificity , double sensitivity ){}
+
+
+
Implement getter-methods for both values:
public double getSpecificity (){}
+public double getSensitivity (){}
+
+
+
+
+
2.2: The Plugin
+
The rest of the code for this task will be implemented in the provided class Task_2_EvaluateSegmentation.
+
In order to calculate the values for Sensitivity and Specificity, you will need to assign a "state" to each pixel of your segmented image. The states in question are:
+
State
+
TP
"True Positive" → the pixel was correctly identified as part of the target
+
TN
"True Negative" → the pixel was correctly identified as background
+
FP
"False Positive" → the pixel was falsely identified as part of the target
+
FN
"False Negative" → the pixel was falsely identified as background
+
+
For decerning which of these cases applies to a given pixel, the reference image is used as the "correct" segmentation.
+
The values for Sensitivity and Specificity can then be calculated as follows:
Check if both images have the same dimensions - if not return null
+
Iterate over both images and count up the number of occurrances for each state
+
Calculate the values for Sensitivity and Specificity using the formulas listed above
+
Create a new EvaluationResult-object to store these values and return it
+
+
+
Now that you have created a method which perfroms the actual evaluation, you will need to implement the run-method in order to apply the plugin to an image.
+
To do:
+
+
+
Use the IJ.openImage()-method to open a window, which allows the user to select the reference image.
+
+
+
Check wether the reference image has been loaded successfully - if not throw a fitting exception
+
+💡 Tip:
+
Check the ImageJ-API to see how the method behaves when no image has been loaded
+
+
+
+
Once the image was loaded successfully, apply your evaluateSegmentation()-method and print your results
+
+📝 Note:
+
As a test for your code, you could for example choose the cells_reference image as both "segmentation" and "reference". The plugin should then return 1.0 for both values.
+
+
+
+
+
2.3: Project-Report
+
The part of your report concerning Task 3 should contain the following:
+
+
A brief explanation as to what TP, TN, FP, FN mean
+
The formulas for Specificity and Sensitivity
+
A brief explanation on what Specificity and Sensitivity mean in the context of image-segmentation
+
+
Additionally you should also include your own results from this exercise:
+
+
Using your plugin from Task 1 generate 6 different segmentations of the "cells"-image using approapriate hyperparamters.
+
Use the plugin you implemented in this task to evaluate each segmentation
+
Display your results in an appropriate way
+
Name two other ways to evaluate how good the segmentation is
Create a New launch configuration with main class exercises.Exercise02
+
+
Set the arguments with the file name in quotes: "path to your data set file" (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat). Don't forget the quotes!
+
Fill in the form with main class exercises.Exercise02 and your file name of the file that you want to open (e.g. <where_you_saved_your_data_set>/MLII/1 NSR/100m (0).mat) as programm arguments in quotes!
Your first task consists of implementing an ImageJ-Plugin capable of performing a classic thresholding operation, as well as correcting for uneven illumination within an image.
+
To get you started, you have been provided with an incomplete class called Task_1_Threshold.
+
+
1.2: Thresholding
+
The concept of thresholding - as the name implies - is based on evaluating an image pixel by pixel and checking each time, whether it falls above or below a given threshold-value.
+If the pixel value in question is above the specified value, it will be set to white. If not it will be set to black.
+
To do:
+
+
+
Create a new method:
+
public ByteProcessor threshold ( ImageProcessor ip , int threshold ){}
+
+
+
+
Create a new ByteProcessor to store your result
+
+
+
Iterate over the entire input image and check the threshold-condition for each pixel
+
+
+
Set each pixel in the output - ByteProcessor according to your evaluation
+
+
+
Return your result
+
+
+
+ 📝 Note:
+ Do not use inbuilt methods provided by ImageJ to perform the thresholding operation
+
+
+
1.3: Illumination-Correction
+
For cases where the illumination of the image is uneven, you will now add the functionality to perform Illumination-Correction.
+
To do:
+
+
+
Create a new method:
+
public ByteProcessor correctIllumination ( ImageProcessor ip ){}
+
+
+
+
Convert the input image to a FloatProcessor (make sure, that the original image remains unchanged)
+
+
+
Apply a Gaussian Filter to the newly created image ($\sigma$ = 75) by using the blurGaussian()-function provided by ImageJ.
+
+
+
Divide the original image by the filtered image (result should also be a FloatProcessor)
+
+
+
Convert your result to a ByteProcessor and return it
+
+
+
+ 💡 Tip:
+The division of two images can simply be performed by iterating over them and performing it "pixelwise".
+
There is however a method provided by ImageJ, which allows you to move (copy) the entire image-data of one image to another, while applying a simple operation (such as division) to every pixel of both images in one go. Check the ImageJ-API in case you want to use this method.
+
+
+
To allow you to test your results, the run-method already contains code for a simple user interface, which gives you the option to select a value for your threshold, as well as let you choose whether or not you want to correct the illumination before thresholding. This code has been commented out to avoid causing errors by calling methods you had not implemented yet.
+
It pays to have a look at this code now, as you will eventually be creating a few dialogues of your own in later tasks.
+
Consider using the "Cells" image to try out your code, since it will be the image you will be working with for the rest of your project.
+
+
1.4: Project Introduction
+
To begin the written section of your Final Project, you will first need to come up with an introduction. This introduction should:
+
+
Capture the readers interest with a short motivation of the project
+
Summarize and contextualize the approach to other research methods
+
Position your approach with respect to other approaches
+
Define the research problem and problem statement
+
Give an overview of the paper's structure
+
+
1.5: Project-Report
+
The part of your report concerning Task_1 should contain the following:
+
+
A brief description of the methods you implemented
+
Provide a mathematically sound formulation of the thresholding operation
+
A short discussion on why it may be necessary to correct the illumination in microscopy-images
+
Images you generated with your code, that showcase what you described
+
Create a figure that shows a few examples of the image before and after thresholding. What does correctIllumination do?