diff --git a/Bilder/Dynamik.png b/Bilder/Dynamik.png new file mode 100644 index 0000000..abfbf52 Binary files /dev/null and b/Bilder/Dynamik.png differ diff --git a/Bilder/Gamma.png b/Bilder/Gamma.png new file mode 100644 index 0000000..63eb134 Binary files /dev/null and b/Bilder/Gamma.png differ diff --git a/Bilder/Histogramm-RGB.png b/Bilder/Histogramm-RGB.png new file mode 100644 index 0000000..5bc660b Binary files /dev/null and b/Bilder/Histogramm-RGB.png differ diff --git a/Bilder/Kompressionseinfluss.png b/Bilder/Kompressionseinfluss.png new file mode 100644 index 0000000..c054aa0 Binary files /dev/null and b/Bilder/Kompressionseinfluss.png differ diff --git a/Bilder/Kontrast.png b/Bilder/Kontrast.png new file mode 100644 index 0000000..9b9d4cb Binary files /dev/null and b/Bilder/Kontrast.png differ diff --git a/Bildverarbeitung_Lausen_Skript_AM.pdf b/Bildverarbeitung_Lausen_Skript_AM.pdf index 1a1ab71..2342297 100644 Binary files a/Bildverarbeitung_Lausen_Skript_AM.pdf and b/Bildverarbeitung_Lausen_Skript_AM.pdf differ diff --git a/Bildverarbeitung_Lausen_Skript_AM.tex b/Bildverarbeitung_Lausen_Skript_AM.tex index 6b4cebe..0e8230f 100644 --- a/Bildverarbeitung_Lausen_Skript_AM.tex +++ b/Bildverarbeitung_Lausen_Skript_AM.tex @@ -35,8 +35,7 @@ \input{Kapitel/01_Einstieg.tex} \input{Kapitel/02_Einleitung.tex} \input{Kapitel/03_Bilderfassung.tex} - \input{Kapitel/04_Farbsysteme.tex} - \input{Kapitel/05_Codierung.tex} + \input{Kapitel/04_Vorverarbeitung.tex} %------- Sonstiges --------------------------------------------------- @@ -46,7 +45,10 @@ \acro{CCD}{Charge Coupled Device} \acro{DCT}{Diskrete Kosinustransformation} \acro{JPEG}{Joint Photographic Experts Group} + \acro{LSI}{Linear Shifting Invariant} \acro{LZW}{Lempel-Ziv-Welch} + \acro{LUT}{Look-Up-Table} + \acro{PO}{Punktoperation} \end{acronym} \newpage diff --git a/Buecher/Berg2014Highly_Preprint.pdf b/Buecher_Paper/Berg2014Highly_Preprint.pdf similarity index 100% rename from Buecher/Berg2014Highly_Preprint.pdf rename to Buecher_Paper/Berg2014Highly_Preprint.pdf diff --git a/Buecher/Digitale_Bilderverarbeitung-Bernd_Jhne.pdf b/Buecher_Paper/Digitale_Bilderverarbeitung-Bernd_Jhne.pdf similarity index 100% rename from Buecher/Digitale_Bilderverarbeitung-Bernd_Jhne.pdf rename to Buecher_Paper/Digitale_Bilderverarbeitung-Bernd_Jhne.pdf diff --git a/Buecher/Digitale_Bildverarbeitung-BurgerBurge.pdf b/Buecher_Paper/Digitale_Bildverarbeitung-BurgerBurge.pdf similarity index 100% rename from Buecher/Digitale_Bildverarbeitung-BurgerBurge.pdf rename to Buecher_Paper/Digitale_Bildverarbeitung-BurgerBurge.pdf diff --git a/JPEG_Kompression.pdf b/Buecher_Paper/JPEG_Kompression.pdf similarity index 100% rename from JPEG_Kompression.pdf rename to Buecher_Paper/JPEG_Kompression.pdf diff --git a/jfif3.pdf b/Buecher_Paper/jfif3.pdf similarity index 100% rename from jfif3.pdf rename to Buecher_Paper/jfif3.pdf diff --git a/Code/plugins/Gamma_2018_10_24/Gamma_2018_10_24.java b/Code/plugins/Gamma_2018_10_24.java similarity index 100% rename from Code/plugins/Gamma_2018_10_24/Gamma_2018_10_24.java rename to Code/plugins/Gamma_2018_10_24.java diff --git a/Code/plugins/Kantenschaerfung_2018_11_07.java b/Code/plugins/Kantenschaerfung_2018_11_07.java new file mode 100644 index 0000000..8c62e30 --- /dev/null +++ b/Code/plugins/Kantenschaerfung_2018_11_07.java @@ -0,0 +1,38 @@ +import ij.*; +import ij.process.*; +import ij.gui.*; +import java.awt.*; +import ij.plugin.filter.*; + +public class Kantenschaerfung_2018_11_07 implements PlugInFilter { + ImagePlus imp; + + public int setup(String arg, ImagePlus imp) { + this.imp = imp; + return DOES_ALL; + } + + public void run(ImageProcessor ip) { + int width = ip.getWidth(); + int height = ip.getHeight(); + + ImageProcessor copy = ip.duplicate(); + + int[][] L ={{1,1,1},{1,-8,1},{1,1,1}}; + + for(int m = 1; m < width - 1; m++) { + for(int n = 1; n < height - 1; n++) { + int p = 0; + for(int i = -1; i <= 1; i++) { + for(int j = -1; j <= 1; j++) { + int I = copy.getPixel(m-i,n-j); + p += I * L[i+1][j+1]; + } + } + p = copy.getPixel(m,n) - (int) (p * 0.5); + ip.putPixel(m,n,p); + } + } + } + +} \ No newline at end of file diff --git a/Code/plugins/Laplace_2018_11_07.java b/Code/plugins/Laplace_2018_11_07.java new file mode 100644 index 0000000..2f22323 --- /dev/null +++ b/Code/plugins/Laplace_2018_11_07.java @@ -0,0 +1,38 @@ +import ij.*; +import ij.process.*; +import ij.gui.*; +import java.awt.*; +import ij.plugin.filter.*; + +public class Laplace_2018_11_07 implements PlugInFilter { + ImagePlus imp; + + public int setup(String arg, ImagePlus imp) { + this.imp = imp; + return DOES_ALL; + } + + public void run(ImageProcessor ip) { + int width = ip.getWidth(); + int height = ip.getHeight(); + + ImageProcessor copy = ip.duplicate(); + + int[][] L ={{1,1,1},{1,-8,1},{1,1,1}}; + + for(int m = 1; m < width - 1; m++) { + for(int n = 1; n < height - 1; n++) { + int p = 0; + for(int i = -1; i <= 1; i++) { + for(int j = -1; j <= 1; j++) { + int I = copy.getPixel(m-i,n-j); + p += I * L[i+1][j+1]; + } + } + p = p*10 + 128; // Irgendein Faktor + ip.putPixel(m,n,p); + } + } + } + +} \ No newline at end of file diff --git a/Code/plugins/Sobel_2018_10_31.java b/Code/plugins/Sobel_2018_10_31.java new file mode 100644 index 0000000..4d5ecf3 --- /dev/null +++ b/Code/plugins/Sobel_2018_10_31.java @@ -0,0 +1,35 @@ +import ij.*; +import ij.process.*; +import ij.gui.*; +import java.awt.*; +import ij.plugin.filter.*; + +public class Sobel_2018_10_31 implements PlugInFilter { + ImagePlus imp; + + public int setup(String arg, ImagePlus imp) { + this.imp = imp; + return DOES_ALL; + } + + public void run(ImageProcessor ip) { + int width = ip.getWidth(); + int height = ip.getHeight(); + ImageProcessor copy = ip.duplicate(); + int[][] H ={{1,0,-1},{2,0,-2},{1,0,-1}}; + + for(int v = 1; v <= height-2; v++) { + for(int u = 1; u <= width-2; u++) { + int k = 0; + for(int j =-1; j <= 1; j++) { + for(int i =-1; j <= 1; j++) { + int I = copy.getPixel(u-i,v-j); + k = k + I * H[i+1][j+1]; + } + } + ip.putPixel(u,v,k); + } + } + } + +} \ No newline at end of file diff --git a/Code/plugins/readme.txt b/Code/plugins/readme.txt deleted file mode 100644 index f5b27d3..0000000 --- a/Code/plugins/readme.txt +++ /dev/null @@ -1 +0,0 @@ -User plugins go here. diff --git a/Code_Original/Filter_Laplace.java b/Code_Original/Filter_Laplace.java new file mode 100644 index 0000000..e80f66d --- /dev/null +++ b/Code_Original/Filter_Laplace.java @@ -0,0 +1,72 @@ +
\ No newline at end of file diff --git a/Code_Original/Filter_Median5.java b/Code_Original/Filter_Median5.java new file mode 100644 index 0000000..0713555 --- /dev/null +++ b/Code_Original/Filter_Median5.java @@ -0,0 +1,44 @@ +import ij.*; +import ij.process.*; +import ij.gui.*; +import java.awt.*; +import ij.plugin.filter.*; +import ij.IJ; +import ij.ImagePlus; +import ij.gui.GenericDialog; +import ij.plugin.filter.PlugInFilter; +import ij.process.ImageProcessor; + + +public class Filter_Laplace implements PlugInFilter { + ImagePlus imp; + + + + + public int setup(String arg, ImagePlus imp) { + this.imp = imp; + return DOES_ALL; + } + + public void run(ImageProcessor orig) { + + int w = orig.getWidth(); + int h = orig.getHeight(); + + double [] [] filter1 = { + { 0 , 1 , 0 }, + { 1, -4 , 1}, + { 0 , 1, 0 } + }; + double [] [] filter2 = { + { 1 , 2 , 1 }, + { 0 , 0 , 0 }, + { -1 , -2, -1 } + }; + ImageProcessor copy = orig.duplicate(); + + + for (int v = 1; v <= h-2; v++) { + for (int u = 1; u <= w-2; u++){ + + double sum1 = 0; + // double sum2 = 0; + + for (int j = -1; j <= 1; j++) { + for (int i = -1; i <= 1; i++){ + + int p = copy.getPixel(u-i,v-j); + + double c1 = filter1[j+1][i+1]; + + // double c2 = filter2[j+1][i+1]; + + sum1 = sum1 + p*c1 ; + // sum2 = sum2 + p*c2; + } + } + int q = (int) Math.round(sum1); + // int q = (int) Math.round(Math.sqrt(sum1*sum1+sum2*sum2)); + orig.putPixel(u,v,q); + } + } + } + + + + +} +
\ No newline at end of file diff --git a/Code_Original/Filter_operator.java b/Code_Original/Filter_operator.java new file mode 100644 index 0000000..88fa751 --- /dev/null +++ b/Code_Original/Filter_operator.java @@ -0,0 +1,72 @@ +import ij.*; +import ij.process.*; +import ij.gui.*; +import java.awt.*; +import ij.plugin.filter.PlugInFilter; +import java.util.Arrays; + +public class Filter_Median5 implements PlugInFilter { + +public int setup(String arg, ImagePlus imp) { + return DOES_ALL; + } + + + public void run(ImageProcessor orig) { + int w = orig.getWidth(); + int h = orig.getHeight(); + + ImageProcessor copy = orig.duplicate(); + + + int[] P = new int[9]; //Vector to hold Pixel from 3x3 matrix + + for (int v = 1; v <= h-2 ; v++) { + for (int u = 1; u <= w-2; u++) { + + int k = 0; + for (int j=-1; j<=1; j++){ + for (int i=-1; i<=1; i++){ + P[k] = copy.getPixel(u+i,v+j); + k++; + } + } + + Arrays.sort(P); + orig.putPixel(u,v, P[4]); + } + } + + } + +} + +
\ No newline at end of file diff --git a/Folien_Lausen/Bildoperatoren_UEberblick.pdf b/Folien_Lausen/Bildoperatoren_UEberblick.pdf new file mode 100644 index 0000000..065f640 Binary files /dev/null and b/Folien_Lausen/Bildoperatoren_UEberblick.pdf differ diff --git a/Folien_Lausen/CCD-PIXEL.pdf b/Folien_Lausen/CCD-PIXEL.pdf new file mode 100644 index 0000000..55b5ba7 Binary files /dev/null and b/Folien_Lausen/CCD-PIXEL.pdf differ diff --git a/Folien_Lausen/CIE.pdf b/Folien_Lausen/CIE.pdf new file mode 100644 index 0000000..6650a37 Binary files /dev/null and b/Folien_Lausen/CIE.pdf differ diff --git a/Folien_Lausen/Das_Rand_Problem_bei_Faltungsfiltern.pdf b/Folien_Lausen/Das_Rand_Problem_bei_Faltungsfiltern.pdf new file mode 100644 index 0000000..14a06ba Binary files /dev/null and b/Folien_Lausen/Das_Rand_Problem_bei_Faltungsfiltern.pdf differ diff --git a/Folien_Lausen/Der_LZ78_Algorithmus.pdf b/Folien_Lausen/Der_LZ78_Algorithmus.pdf new file mode 100644 index 0000000..7e9359f Binary files /dev/null and b/Folien_Lausen/Der_LZ78_Algorithmus.pdf differ diff --git a/Folien_Lausen/Entfernung_von_strukturiertem_Rauschen.pdf b/Folien_Lausen/Entfernung_von_strukturiertem_Rauschen.pdf new file mode 100644 index 0000000..48dc758 Binary files /dev/null and b/Folien_Lausen/Entfernung_von_strukturiertem_Rauschen.pdf differ diff --git a/Folien_Lausen/Farbraeume.pdf b/Folien_Lausen/Farbraeume.pdf new file mode 100644 index 0000000..172ac05 Binary files /dev/null and b/Folien_Lausen/Farbraeume.pdf differ diff --git a/Folien_Lausen/Jpeg.pdf b/Folien_Lausen/Jpeg.pdf new file mode 100644 index 0000000..f6036f2 Binary files /dev/null and b/Folien_Lausen/Jpeg.pdf differ diff --git a/Folien_Lausen/Laplace-Operator-Kantendetektion.pdf b/Folien_Lausen/Laplace-Operator-Kantendetektion.pdf new file mode 100644 index 0000000..7cffc5f Binary files /dev/null and b/Folien_Lausen/Laplace-Operator-Kantendetektion.pdf differ diff --git a/Folien_Lausen/Lempel-Ziv-Welch.pdf b/Folien_Lausen/Lempel-Ziv-Welch.pdf new file mode 100644 index 0000000..8817254 Binary files /dev/null and b/Folien_Lausen/Lempel-Ziv-Welch.pdf differ diff --git a/Folien_Lausen/LoG-Operator.pdf b/Folien_Lausen/LoG-Operator.pdf new file mode 100644 index 0000000..17fcbbc Binary files /dev/null and b/Folien_Lausen/LoG-Operator.pdf differ diff --git a/Folien_Lausen/Merkmalsextraktion.pdf b/Folien_Lausen/Merkmalsextraktion.pdf new file mode 100644 index 0000000..115d159 Binary files /dev/null and b/Folien_Lausen/Merkmalsextraktion.pdf differ diff --git a/Folien_Lausen/Moire.pdf b/Folien_Lausen/Moire.pdf new file mode 100644 index 0000000..e600c7b Binary files /dev/null and b/Folien_Lausen/Moire.pdf differ diff --git a/Folien_Lausen/Morphologische_Operatoren.pdf b/Folien_Lausen/Morphologische_Operatoren.pdf new file mode 100644 index 0000000..acb232e Binary files /dev/null and b/Folien_Lausen/Morphologische_Operatoren.pdf differ diff --git a/Folien_Lausen/Neuronale_Netze.pdf b/Folien_Lausen/Neuronale_Netze.pdf new file mode 100644 index 0000000..ff5aaca Binary files /dev/null and b/Folien_Lausen/Neuronale_Netze.pdf differ diff --git a/Physik_CCD.pdf b/Folien_Lausen/Physik_CCD.pdf similarity index 100% rename from Physik_CCD.pdf rename to Folien_Lausen/Physik_CCD.pdf diff --git a/Folien_Lausen/Physik_des_CCD.pdf b/Folien_Lausen/Physik_des_CCD.pdf new file mode 100644 index 0000000..0efc743 Binary files /dev/null and b/Folien_Lausen/Physik_des_CCD.pdf differ diff --git a/Folien_Lausen/Rauschen_auf_dem_CCD.pdf b/Folien_Lausen/Rauschen_auf_dem_CCD.pdf new file mode 100644 index 0000000..25c9a4f Binary files /dev/null and b/Folien_Lausen/Rauschen_auf_dem_CCD.pdf differ diff --git a/Folien_Lausen/Robertsen-Cross-Operator.pdf b/Folien_Lausen/Robertsen-Cross-Operator.pdf new file mode 100644 index 0000000..abe52eb Binary files /dev/null and b/Folien_Lausen/Robertsen-Cross-Operator.pdf differ diff --git a/Folien_Lausen/Segmentierung_nach_Otsu.pdf b/Folien_Lausen/Segmentierung_nach_Otsu.pdf new file mode 100644 index 0000000..64f4900 Binary files /dev/null and b/Folien_Lausen/Segmentierung_nach_Otsu.pdf differ diff --git a/Folien_Lausen/Skelettierung-2.pdf b/Folien_Lausen/Skelettierung-2.pdf new file mode 100644 index 0000000..eb97639 Binary files /dev/null and b/Folien_Lausen/Skelettierung-2.pdf differ diff --git a/Folien_Lausen/Skelettierung.pdf b/Folien_Lausen/Skelettierung.pdf new file mode 100644 index 0000000..83d0592 Binary files /dev/null and b/Folien_Lausen/Skelettierung.pdf differ diff --git a/Folien_Lausen/TR-Harris-Strukturmatrix.pdf b/Folien_Lausen/TR-Harris-Strukturmatrix.pdf new file mode 100644 index 0000000..6498387 --- /dev/null +++ b/Folien_Lausen/TR-Harris-Strukturmatrix.pdf @@ -0,0 +1,1978 @@ +%PDF-1.3 +% +23 0 obj +<< +/CreationDate (D:20061108212514+01'00') +/ModDate (D:20061108212514+01'00') +/Producer (BCL easyPDF 4.30 \(0410\)) +/Creator (easyPDF Printer Driver 4.3) +/Title (Rezepte Mathe 1 + 2) +/Author (Wolfgang Konen) +/Subject (FHK) +>> +endobj + +29 0 obj +[ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 750 750 +278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 +1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 +667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 +333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 +556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 750 +556 750 222 556 333 1000 556 556 333 1000 667 333 1000 750 611 750 +750 222 222 333 333 350 556 1000 333 1000 500 333 944 750 500 667 +278 333 556 556 556 556 260 556 333 737 370 556 584 333 737 552 +400 549 333 333 333 576 537 278 333 333 365 556 834 834 834 611 +667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278 +722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 +556 556 556 556 556 556 889 500 556 556 556 556 278 278 278 278 +556 556 556 556 556 556 556 549 611 556 556 556 556 500 556 500 +] +endobj + +33 0 obj +[ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 750 750 +278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 +975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 +667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 +333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 +611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 750 +556 750 278 556 500 1000 556 556 333 1000 667 333 1000 750 611 750 +750 278 278 500 500 350 556 1000 333 1000 556 333 944 750 500 667 +278 333 556 556 556 556 280 556 333 737 370 556 584 333 737 552 +400 549 333 333 333 576 556 278 333 333 365 556 834 834 834 611 +722 722 722 722 722 722 1000 722 667 667 667 667 278 278 278 278 +722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 +556 556 556 556 556 556 889 556 556 556 556 556 278 278 278 278 +611 611 611 611 611 611 611 549 611 611 611 611 611 556 611 556 +] +endobj + +35 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [180 645 223 635] +/Border [0 0 0] +/A << /S /GoTo /D 22 0 R >> +>> +endobj + +36 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [249 634 296 624] +/Border [0 0 0] +/A << /S /GoTo /D 21 0 R >> +>> +endobj + +37 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [80 583 523 573] +/Border [0 0 0] +/A << /S /GoTo /D 14 0 R >> +>> +endobj + +38 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [80 572 523 562] +/Border [0 0 0] +/A << /S /GoTo /D 15 0 R >> +>> +endobj + +41 0 obj +[ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 750 750 +278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 +975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 +667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 +333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 +611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 750 +556 750 278 556 500 1000 556 556 333 1000 667 333 1000 750 611 750 +750 278 278 500 500 350 556 1000 333 1000 556 333 944 750 500 667 +278 333 556 556 556 556 280 556 333 737 370 556 584 333 737 552 +400 549 333 333 333 576 556 278 333 333 365 556 834 834 834 611 +722 722 722 722 722 722 1000 722 667 667 667 667 278 278 278 278 +722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 +556 556 556 556 556 556 889 556 556 556 556 556 278 278 278 278 +611 611 611 611 611 611 611 549 611 611 611 611 611 556 611 556 +] +endobj + +44 0 obj +[ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 750 750 +278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 +1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 +667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 +333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 +556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 750 +556 750 222 556 333 1000 556 556 333 1000 667 333 1000 750 611 750 +750 222 222 333 333 350 556 1000 333 1000 500 333 944 750 500 667 +278 333 556 556 556 556 260 556 333 737 370 556 584 333 737 552 +400 549 333 333 333 576 537 278 333 333 365 556 834 834 834 611 +667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278 +722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 +556 556 556 556 556 556 889 500 556 556 556 556 278 278 278 278 +556 556 556 556 556 556 556 549 611 556 556 556 556 500 556 500 +] +endobj + +39 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [80 560 352 550] +/Border [0 0 0] +/A << /S /GoTo /D 16 0 R >> +>> +endobj + +48 0 obj +[ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 778 +250 333 408 500 500 833 778 180 333 333 500 564 250 333 250 278 +500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 +921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 +556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 +333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 +500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 778 +500 778 333 500 444 1000 500 500 333 1000 556 333 889 778 611 778 +778 333 333 444 444 350 500 1000 333 980 389 333 722 778 444 722 +250 333 500 500 500 500 200 500 333 760 276 500 564 333 760 500 +400 549 300 300 333 576 453 250 333 300 310 500 750 750 750 444 +722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333 +722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500 +444 444 444 444 444 444 667 444 444 444 444 444 278 278 278 278 +500 500 500 500 500 500 500 549 500 500 500 500 500 500 500 500 +] +endobj + +46 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [203 377 203 377] +/Border [0 0 0] +/A << /S /GoTo /D 16 0 R >> +>> +endobj + +50 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [97 344 310 335] +/Border [0 0 0] +/A << /S /GoTo /D 17 0 R >> +>> +endobj + +51 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [198 286 431 276] +/Border [0 0 0] +/A << /S /GoTo /D 17 0 R >> +>> +endobj + +52 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [488 269 488 269] +/Border [0 0 0] +/A << /S /GoTo /D 17 0 R >> +>> +endobj + +55 0 obj +[ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +] +endobj + +53 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [230 257 230 257] +/Border [0 0 0] +/A << /S /GoTo /D 17 0 R >> +>> +endobj + +57 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [148 110 148 110] +/Border [0 0 0] +/A << /S /GoTo /D 17 0 R >> +>> +endobj + +59 0 obj +<< +/Length 3108 +/Filter /FlateDecode +>> +stream +xZmo6_kJR|--6N|gm@{Z:]kLC33P}u#`'/\3/ǿcToۼIzKSonM6ocX]``yGrye'~8.;MO2e3_gsi*import ij.*; +import ij.process.*; +import ij.gui.*; +import java.awt.*; +import ij.plugin.filter.*; +import ij.IJ; +import ij.ImagePlus; +import ij.gui.GenericDialog; +import ij.plugin.filter.PlugInFilter; +import ij.process.ImageProcessor; + + +public class Filter_operator implements PlugInFilter { + ImagePlus imp; + + + + + public int setup(String arg, ImagePlus imp) { + this.imp = imp; + return DOES_ALL; + } + + public void run(ImageProcessor orig) { + + int w = orig.getWidth(); + int h = orig.getHeight(); + + double [] [] filter1 = { + { 1 , 0 , -1 }, + { 2 , 0 , -2}, + { 1 , 0, -1 } + }; + double [] [] filter2 = { + { 1 , 2 , 1 }, + { 0 , 0 , 0 }, + { -1 , -2, -1 } + }; + ImageProcessor copy = orig.duplicate(); + + + for (int v = 1; v <= h-2; v++) { + for (int u = 1; u <= w-2; u++){ + + double sum1 = 0; + double sum2 = 0; + + for (int j = -1; j <= 1; j++) { + for (int i = -1; i <= 1; i++){ + + int p = copy.getPixel(u-i,v-j); + + double c1 = filter1[j+1][i+1]; + + double c2 = filter2[j+1][i+1]; + + sum1 = sum1 + p*c1 ; + sum2 = sum2 + p*c2; + } + } + // int q = (int) Math.round(sum1); + int q = (int) Math.round(Math.sqrt(sum1*sum1+sum2*sum2)); + orig.putPixel(u,v,q); + } + } + } + + + + +} +