@ -0,0 +1,73 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!-- You may freely edit this file. See commented blocks below for --> | |||
<!-- some examples of how to customize the build. --> | |||
<!-- (If you delete it and reopen the project it will be recreated.) --> | |||
<!-- By default, only the Clean and Build commands use this build script. --> | |||
<!-- Commands such as Run, Debug, and Test only use this build script if --> | |||
<!-- the Compile on Save feature is turned off for the project. --> | |||
<!-- You can turn off the Compile on Save (or Deploy on Save) setting --> | |||
<!-- in the project's Project Properties dialog box.--> | |||
<project name="Filtro_Chido" default="default" basedir="."> | |||
<description>Builds, tests, and runs the project Filtro_Chido.</description> | |||
<import file="nbproject/build-impl.xml"/> | |||
<!-- | |||
There exist several targets which are by default empty and which can be | |||
used for execution of your tasks. These targets are usually executed | |||
before and after some main targets. They are: | |||
-pre-init: called before initialization of project properties | |||
-post-init: called after initialization of project properties | |||
-pre-compile: called before javac compilation | |||
-post-compile: called after javac compilation | |||
-pre-compile-single: called before javac compilation of single file | |||
-post-compile-single: called after javac compilation of single file | |||
-pre-compile-test: called before javac compilation of JUnit tests | |||
-post-compile-test: called after javac compilation of JUnit tests | |||
-pre-compile-test-single: called before javac compilation of single JUnit test | |||
-post-compile-test-single: called after javac compilation of single JUunit test | |||
-pre-jar: called before JAR building | |||
-post-jar: called after JAR building | |||
-post-clean: called after cleaning build products | |||
(Targets beginning with '-' are not intended to be called on their own.) | |||
Example of inserting an obfuscator after compilation could look like this: | |||
<target name="-post-compile"> | |||
<obfuscate> | |||
<fileset dir="${build.classes.dir}"/> | |||
</obfuscate> | |||
</target> | |||
For list of available properties check the imported | |||
nbproject/build-impl.xml file. | |||
Another way to customize the build is by overriding existing main targets. | |||
The targets of interest are: | |||
-init-macrodef-javac: defines macro for javac compilation | |||
-init-macrodef-junit: defines macro for junit execution | |||
-init-macrodef-debug: defines macro for class debugging | |||
-init-macrodef-java: defines macro for class execution | |||
-do-jar: JAR building | |||
run: execution of project | |||
-javadoc-build: Javadoc generation | |||
test-report: JUnit report generation | |||
An example of overriding the target for project execution could look like this: | |||
<target name="run" depends="Filtro_Chido-impl.jar"> | |||
<exec dir="bin" executable="launcher.exe"> | |||
<arg file="${dist.jar}"/> | |||
</exec> | |||
</target> | |||
Notice that the overridden target depends on the jar target and not only on | |||
the compile target as the regular run target does. Again, for a list of available | |||
properties which you can use, check the target you are overriding in the | |||
nbproject/build-impl.xml file. | |||
--> | |||
</project> |
@ -0,0 +1,193 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> | |||
<Properties> | |||
<Property name="defaultCloseOperation" type="int" value="3"/> | |||
<Property name="name" type="java.lang.String" value="Panel_Principal" noResource="true"/> | |||
</Properties> | |||
<SyntheticProperties> | |||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/> | |||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/> | |||
</SyntheticProperties> | |||
<AuxValues> | |||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | |||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | |||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | |||
</AuxValues> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jPanel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jPanel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Container class="javax.swing.JPanel" name="jPanel1"> | |||
<Properties> | |||
<Property name="name" type="java.lang.String" value="Panel_Original" noResource="true"/> | |||
</Properties> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
<Group type="102" attributes="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<Component id="jPanel3" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace type="unrelated" max="-2" attributes="0"/> | |||
<Group type="103" groupAlignment="0" max="-2" attributes="0"> | |||
<Component id="jButton1" max="32767" attributes="0"/> | |||
<Component id="jButton2" max="32767" attributes="0"/> | |||
<Component id="jButton3" max="32767" attributes="0"/> | |||
<Component id="jButton4" max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
<Component id="jPanel2" alignment="0" min="-2" max="-2" attributes="0"/> | |||
</Group> | |||
<EmptySpace min="0" pref="176" max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="1" attributes="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Component id="jPanel3" min="-2" max="-2" attributes="0"/> | |||
<Group type="102" attributes="0"> | |||
<Component id="jButton3" min="-2" pref="33" max="-2" attributes="0"/> | |||
<EmptySpace type="unrelated" max="-2" attributes="0"/> | |||
<Component id="jButton2" min="-2" pref="36" max="-2" attributes="0"/> | |||
<EmptySpace type="separate" max="-2" attributes="0"/> | |||
<Component id="jButton1" min="-2" pref="33" max="-2" attributes="0"/> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jButton4" min="-2" pref="34" max="-2" attributes="0"/> | |||
</Group> | |||
</Group> | |||
<EmptySpace pref="27" max="32767" attributes="0"/> | |||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jPanel2" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace min="-2" pref="23" max="-2" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Container class="javax.swing.JPanel" name="jPanel2"> | |||
<Properties> | |||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> | |||
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> | |||
<LineBorder/> | |||
</Border> | |||
</Property> | |||
<Property name="name" type="java.lang.String" value="Panel_Vista_Previa" noResource="true"/> | |||
</Properties> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<EmptySpace min="0" pref="956" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<EmptySpace min="0" pref="422" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
</Container> | |||
<Container class="javax.swing.JPanel" name="jPanel3"> | |||
<Properties> | |||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> | |||
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> | |||
<LineBorder/> | |||
</Border> | |||
</Property> | |||
<Property name="name" type="java.lang.String" value="Panel_Original" noResource="true"/> | |||
</Properties> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Component id="jLabel2" alignment="0" pref="956" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Component id="jLabel2" alignment="0" pref="422" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Component class="javax.swing.JLabel" name="jLabel2"> | |||
</Component> | |||
</SubComponents> | |||
</Container> | |||
<Component class="javax.swing.JLabel" name="jLabel1"> | |||
<Properties> | |||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> | |||
<Font name="Tahoma" size="14" style="0"/> | |||
</Property> | |||
<Property name="text" type="java.lang.String" value="VISTA PREVIA"/> | |||
</Properties> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton1"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="Median filter"/> | |||
<Property name="name" type="java.lang.String" value="Radius_Button" noResource="true"/> | |||
</Properties> | |||
<Events> | |||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/> | |||
</Events> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton2"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="Black & White"/> | |||
</Properties> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton3"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="Cargar Imagen"/> | |||
<Property name="name" type="java.lang.String" value="Cargar_Img" noResource="true"/> | |||
</Properties> | |||
<Events> | |||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/> | |||
</Events> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton4"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="SRM"/> | |||
</Properties> | |||
<Events> | |||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton4ActionPerformed"/> | |||
</Events> | |||
</Component> | |||
</SubComponents> | |||
</Container> | |||
</SubComponents> | |||
</Form> |
@ -0,0 +1,50 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> | |||
<Properties> | |||
<Property name="defaultCloseOperation" type="int" value="3"/> | |||
</Properties> | |||
<SyntheticProperties> | |||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/> | |||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/> | |||
</SyntheticProperties> | |||
<AuxValues> | |||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | |||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | |||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | |||
</AuxValues> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="1" attributes="0"> | |||
<EmptySpace max="32767" attributes="0"/> | |||
<Component id="JMCImg" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="-2" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="JMCImg" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Component class="javax.swing.JFileChooser" name="JMCImg"> | |||
<AuxValues> | |||
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="9"/> | |||
</AuxValues> | |||
</Component> | |||
</SubComponents> | |||
</Form> |
@ -0,0 +1,3 @@ | |||
Manifest-Version: 1.0 | |||
X-COMMENT: Main-Class will be added automatically by build | |||
@ -0,0 +1,8 @@ | |||
build.xml.data.CRC32=7f4949f9 | |||
build.xml.script.CRC32=5771b5c4 | |||
build.xml.stylesheet.CRC32=f85dc8f2@1.99.0.48 | |||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. | |||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. | |||
nbproject/build-impl.xml.data.CRC32=7f4949f9 | |||
nbproject/build-impl.xml.script.CRC32=67d862f6 | |||
nbproject/build-impl.xml.stylesheet.CRC32=d549e5cc@1.99.0.48 |
@ -0,0 +1,8 @@ | |||
compile.on.save=true | |||
do.depend=false | |||
do.jar=true | |||
file.reference.Adaptive_Median_Filter-0.1.0.jar=C:\\Users\\humme\\Documents\\NetBeansProjects\\Filtro_Chido\\Adaptive_Median_Filter-0.1.0.jar | |||
file.reference.ij-1.50e.jar=C:\\Users\\humme\\Documents\\NetBeansProjects\\Filtro_Chido\\ij-1.50e.jar | |||
javac.debug=true | |||
javadoc.preview=true | |||
user.properties.file=C:\\Users\\Pott\\AppData\\Roaming\\NetBeans\\12.4\\build.properties |
@ -0,0 +1,11 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> | |||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> | |||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> | |||
<group> | |||
<file>file:/C:/Users/humme/Documents/NetBeansProjects/Filtro_Chido/src/filtro_chido/SRM.java</file> | |||
<file>file:/C:/Users/humme/Documents/NetBeansProjects/Filtro_Chido/src/filtro_chido/Filtro_Chido.java</file> | |||
<file>file:/C:/Users/humme/Documents/NetBeansProjects/Filtro_Chido/src/filtro_chido/Filtrado.java</file> | |||
</group> | |||
</open-files> | |||
</project-private> |
@ -0,0 +1,95 @@ | |||
annotation.processing.enabled=true | |||
annotation.processing.enabled.in.editor=false | |||
annotation.processing.processors.list= | |||
annotation.processing.run.all.processors=true | |||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output | |||
application.title=Filtro_Chido | |||
application.vendor=humme | |||
build.classes.dir=${build.dir}/classes | |||
build.classes.excludes=**/*.java,**/*.form | |||
# This directory is removed when the project is cleaned: | |||
build.dir=build | |||
build.generated.dir=${build.dir}/generated | |||
build.generated.sources.dir=${build.dir}/generated-sources | |||
# Only compile against the classpath explicitly listed here: | |||
build.sysclasspath=ignore | |||
build.test.classes.dir=${build.dir}/test/classes | |||
build.test.results.dir=${build.dir}/test/results | |||
# Uncomment to specify the preferred debugger connection transport: | |||
#debug.transport=dt_socket | |||
debug.classpath=\ | |||
${run.classpath} | |||
debug.modulepath=\ | |||
${run.modulepath} | |||
debug.test.classpath=\ | |||
${run.test.classpath} | |||
debug.test.modulepath=\ | |||
${run.test.modulepath} | |||
# Files in build.classes.dir which should be excluded from distribution jar | |||
dist.archive.excludes= | |||
# This directory is removed when the project is cleaned: | |||
dist.dir=dist | |||
dist.jar=${dist.dir}/Filtro_Chido.jar | |||
dist.javadoc.dir=${dist.dir}/javadoc | |||
endorsed.classpath= | |||
excludes= | |||
file.reference.Adaptive_Median_Filter-0.1.0.jar=C:\\Users\\humme\\Downloads\\Adaptive_Median_Filter-0.1.0.jar | |||
file.reference.Adaptive_Median_Filter-0.1.0.jar-1=Adaptive_Median_Filter-0.1.0.jar | |||
file.reference.ij-1.50e.jar=C:\\Users\\humme\\Downloads\\ij-1.50e.jar | |||
file.reference.ij-1.50e.jar-1=ij-1.50e.jar | |||
includes=** | |||
jar.compress=false | |||
javac.classpath=\ | |||
${file.reference.Adaptive_Median_Filter-0.1.0.jar}:\ | |||
${file.reference.ij-1.50e.jar}:\ | |||
${file.reference.Adaptive_Median_Filter-0.1.0.jar-1}:\ | |||
${file.reference.ij-1.50e.jar-1} | |||
# Space-separated list of extra javac options | |||
javac.compilerargs= | |||
javac.deprecation=false | |||
javac.modulepath= | |||
javac.processormodulepath= | |||
javac.processorpath=\ | |||
${javac.classpath} | |||
javac.source=1.8 | |||
javac.target=1.8 | |||
javac.test.classpath=\ | |||
${javac.classpath}:\ | |||
${build.classes.dir} | |||
javac.test.modulepath=\ | |||
${javac.modulepath} | |||
javac.test.processorpath=\ | |||
${javac.test.classpath} | |||
javadoc.additionalparam= | |||
javadoc.author=false | |||
javadoc.encoding=${source.encoding} | |||
javadoc.noindex=false | |||
javadoc.nonavbar=false | |||
javadoc.notree=false | |||
javadoc.private=false | |||
javadoc.splitindex=true | |||
javadoc.use=true | |||
javadoc.version=false | |||
javadoc.windowtitle= | |||
main.class=filtro_chido.Filtro_Chido | |||
manifest.file=manifest.mf | |||
meta.inf.dir=${src.dir}/META-INF | |||
mkdist.disabled=false | |||
platform.active=default_platform | |||
run.classpath=\ | |||
${javac.classpath}:\ | |||
${build.classes.dir} | |||
# Space-separated list of JVM arguments used when running the project. | |||
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. | |||
# To set system properties for unit tests define test-sys-prop.name=value: | |||
run.jvmargs= | |||
run.modulepath=\ | |||
${javac.modulepath} | |||
run.test.classpath=\ | |||
${javac.test.classpath}:\ | |||
${build.test.classes.dir} | |||
run.test.modulepath=\ | |||
${javac.test.modulepath} | |||
source.encoding=UTF-8 | |||
src.dir=src | |||
test.src.dir=test |
@ -0,0 +1,15 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project xmlns="http://www.netbeans.org/ns/project/1"> | |||
<type>org.netbeans.modules.java.j2seproject</type> | |||
<configuration> | |||
<data xmlns="http://www.netbeans.org/ns/j2se-project/3"> | |||
<name>Filtro_Chido</name> | |||
<source-roots> | |||
<root id="src.dir"/> | |||
</source-roots> | |||
<test-roots> | |||
<root id="test.src.dir"/> | |||
</test-roots> | |||
</data> | |||
</configuration> | |||
</project> |
@ -0,0 +1,193 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> | |||
<Properties> | |||
<Property name="defaultCloseOperation" type="int" value="3"/> | |||
<Property name="name" type="java.lang.String" value="Panel_Principal" noResource="true"/> | |||
</Properties> | |||
<SyntheticProperties> | |||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/> | |||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/> | |||
</SyntheticProperties> | |||
<AuxValues> | |||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | |||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | |||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | |||
</AuxValues> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jPanel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jPanel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Container class="javax.swing.JPanel" name="jPanel1"> | |||
<Properties> | |||
<Property name="name" type="java.lang.String" value="Panel_Original" noResource="true"/> | |||
</Properties> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
<Group type="102" attributes="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<Component id="jPanel3" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace type="unrelated" max="-2" attributes="0"/> | |||
<Group type="103" groupAlignment="0" max="-2" attributes="0"> | |||
<Component id="jButton1" max="32767" attributes="0"/> | |||
<Component id="jButton2" max="32767" attributes="0"/> | |||
<Component id="jButton3" max="32767" attributes="0"/> | |||
<Component id="jButton4" max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
<Component id="jPanel2" alignment="0" min="-2" max="-2" attributes="0"/> | |||
</Group> | |||
<EmptySpace min="0" pref="176" max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="1" attributes="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Component id="jPanel3" min="-2" max="-2" attributes="0"/> | |||
<Group type="102" attributes="0"> | |||
<Component id="jButton3" min="-2" pref="33" max="-2" attributes="0"/> | |||
<EmptySpace type="unrelated" max="-2" attributes="0"/> | |||
<Component id="jButton2" min="-2" pref="36" max="-2" attributes="0"/> | |||
<EmptySpace type="separate" max="-2" attributes="0"/> | |||
<Component id="jButton1" min="-2" pref="33" max="-2" attributes="0"/> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jButton4" min="-2" pref="34" max="-2" attributes="0"/> | |||
</Group> | |||
</Group> | |||
<EmptySpace pref="27" max="32767" attributes="0"/> | |||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="jPanel2" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace min="-2" pref="23" max="-2" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Container class="javax.swing.JPanel" name="jPanel2"> | |||
<Properties> | |||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> | |||
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> | |||
<LineBorder/> | |||
</Border> | |||
</Property> | |||
<Property name="name" type="java.lang.String" value="Panel_Vista_Previa" noResource="true"/> | |||
</Properties> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<EmptySpace min="0" pref="956" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<EmptySpace min="0" pref="422" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
</Container> | |||
<Container class="javax.swing.JPanel" name="jPanel3"> | |||
<Properties> | |||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> | |||
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> | |||
<LineBorder/> | |||
</Border> | |||
</Property> | |||
<Property name="name" type="java.lang.String" value="Panel_Original" noResource="true"/> | |||
</Properties> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Component id="jLabel2" alignment="0" pref="956" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Component id="jLabel2" alignment="0" pref="422" max="32767" attributes="0"/> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Component class="javax.swing.JLabel" name="jLabel2"> | |||
</Component> | |||
</SubComponents> | |||
</Container> | |||
<Component class="javax.swing.JLabel" name="jLabel1"> | |||
<Properties> | |||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> | |||
<Font name="Tahoma" size="14" style="0"/> | |||
</Property> | |||
<Property name="text" type="java.lang.String" value="VISTA PREVIA"/> | |||
</Properties> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton1"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="Median filter"/> | |||
<Property name="name" type="java.lang.String" value="Radius_Button" noResource="true"/> | |||
</Properties> | |||
<Events> | |||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/> | |||
</Events> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton2"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="Black & White"/> | |||
</Properties> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton3"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="Cargar Imagen"/> | |||
<Property name="name" type="java.lang.String" value="Cargar_Img" noResource="true"/> | |||
</Properties> | |||
<Events> | |||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/> | |||
</Events> | |||
</Component> | |||
<Component class="javax.swing.JButton" name="jButton4"> | |||
<Properties> | |||
<Property name="text" type="java.lang.String" value="SRM"/> | |||
</Properties> | |||
<Events> | |||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton4ActionPerformed"/> | |||
</Events> | |||
</Component> | |||
</SubComponents> | |||
</Container> | |||
</SubComponents> | |||
</Form> |
@ -0,0 +1,266 @@ | |||
/* | |||
* To change this license header, choose License Headers in Project Properties. | |||
* To change this template file, choose Tools | Templates | |||
* and open the template in the editor. | |||
*/ | |||
package filtro_chido; | |||
import com.HIT.weisongzhao.AdaptiveMedian; | |||
import java.awt.Image; | |||
import java.io.File; | |||
import javax.swing.Icon; | |||
import javax.swing.ImageIcon; | |||
import javax.swing.JFileChooser; | |||
import javax.swing.filechooser.FileNameExtensionFilter; | |||
/** | |||
* | |||
* srm1.setup = bufferredImage ; | |||
* | |||
* | |||
* | |||
* | |||
* | |||
* @author humme | |||
*/ | |||
public class Filtrado extends javax.swing.JFrame { | |||
/** | |||
* Creates new form Filtrado | |||
*/ | |||
public Filtrado() { | |||
initComponents(); | |||
} | |||
File archivo; | |||
/** | |||
* This method is called from within the constructor to initialize the form. | |||
* WARNING: Do NOT modify this code. The content of this method is always | |||
* regenerated by the Form Editor. | |||
*/ | |||
@SuppressWarnings("unchecked") | |||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | |||
private void initComponents() { | |||
jPanel1 = new javax.swing.JPanel(); | |||
jPanel2 = new javax.swing.JPanel(); | |||
jPanel3 = new javax.swing.JPanel(); | |||
jLabel2 = new javax.swing.JLabel(); | |||
jLabel1 = new javax.swing.JLabel(); | |||
jButton1 = new javax.swing.JButton(); | |||
jButton2 = new javax.swing.JButton(); | |||
jButton3 = new javax.swing.JButton(); | |||
jButton4 = new javax.swing.JButton(); | |||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | |||
setName("Panel_Principal"); // NOI18N | |||
jPanel1.setName("Panel_Original"); // NOI18N | |||
jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); | |||
jPanel2.setName("Panel_Vista_Previa"); // NOI18N | |||
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); | |||
jPanel2.setLayout(jPanel2Layout); | |||
jPanel2Layout.setHorizontalGroup( | |||
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGap(0, 956, Short.MAX_VALUE) | |||
); | |||
jPanel2Layout.setVerticalGroup( | |||
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGap(0, 422, Short.MAX_VALUE) | |||
); | |||
jPanel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); | |||
jPanel3.setName("Panel_Original"); // NOI18N | |||
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); | |||
jPanel3.setLayout(jPanel3Layout); | |||
jPanel3Layout.setHorizontalGroup( | |||
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 956, Short.MAX_VALUE) | |||
); | |||
jPanel3Layout.setVerticalGroup( | |||
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 422, Short.MAX_VALUE) | |||
); | |||
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N | |||
jLabel1.setText("VISTA PREVIA"); | |||
jButton1.setText("Median filter"); | |||
jButton1.setName("Radius_Button"); // NOI18N | |||
jButton1.addActionListener(new java.awt.event.ActionListener() { | |||
public void actionPerformed(java.awt.event.ActionEvent evt) { | |||
jButton1ActionPerformed(evt); | |||
} | |||
}); | |||
jButton2.setText("Black & White"); | |||
jButton3.setText("Cargar Imagen"); | |||
jButton3.setName("Cargar_Img"); // NOI18N | |||
jButton3.addActionListener(new java.awt.event.ActionListener() { | |||
public void actionPerformed(java.awt.event.ActionEvent evt) { | |||
jButton3ActionPerformed(evt); | |||
} | |||
}); | |||
jButton4.setText("SRM"); | |||
jButton4.addActionListener(new java.awt.event.ActionListener() { | |||
public void actionPerformed(java.awt.event.ActionEvent evt) { | |||
jButton4ActionPerformed(evt); | |||
} | |||
}); | |||
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); | |||
jPanel1.setLayout(jPanel1Layout); | |||
jPanel1Layout.setHorizontalGroup( | |||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGroup(jPanel1Layout.createSequentialGroup() | |||
.addContainerGap() | |||
.addComponent(jLabel1) | |||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |||
.addGroup(jPanel1Layout.createSequentialGroup() | |||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGroup(jPanel1Layout.createSequentialGroup() | |||
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) | |||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) | |||
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |||
.addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |||
.addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |||
.addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) | |||
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) | |||
.addGap(0, 176, Short.MAX_VALUE)) | |||
); | |||
jPanel1Layout.setVerticalGroup( | |||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() | |||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addGroup(jPanel1Layout.createSequentialGroup() | |||
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) | |||
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addGap(18, 18, 18) | |||
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |||
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))) | |||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 27, Short.MAX_VALUE) | |||
.addComponent(jLabel1) | |||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |||
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addGap(23, 23, 23)) | |||
); | |||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); | |||
getContentPane().setLayout(layout); | |||
layout.setHorizontalGroup( | |||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGroup(layout.createSequentialGroup() | |||
.addContainerGap() | |||
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |||
); | |||
layout.setVerticalGroup( | |||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGroup(layout.createSequentialGroup() | |||
.addContainerGap() | |||
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |||
); | |||
pack(); | |||
}// </editor-fold>//GEN-END:initComponents | |||
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed | |||
AdaptiveMedian(); | |||
}//GEN-LAST:event_jButton1ActionPerformed | |||
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed | |||
Imagen image = new Imagen(jPanel3); | |||
jPanel3.add(image).repaint(); | |||
int resultado; | |||
buscarImg buscador = new buscarImg(); | |||
FileNameExtensionFilter formato = new FileNameExtensionFilter("JPG","PNG","GIF","jpg","png","gif"); | |||
buscador.JMCImg.setFileFilter(formato); | |||
resultado = buscador.JMCImg.showOpenDialog(null); | |||
if(JFileChooser.APPROVE_OPTION == resultado){ | |||
try{ | |||
archivo = buscador.JMCImg.getSelectedFile(); | |||
//jLDireccion.setText(archivo.getAbsolutePath()); | |||
ImageIcon imgIcon = new ImageIcon(archivo.toString()); | |||
Icon ico = new ImageIcon(imgIcon.getImage().getScaledInstance(jLabel2.getWidth(), jLabel2.getHeight(), Image.SCALE_DEFAULT) ); | |||
jLabel2.setIcon(ico); | |||
}catch(Exception ex){ | |||
} | |||
} | |||
}//GEN-LAST:event_jButton3ActionPerformed | |||
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed | |||
SRM(); | |||
}//GEN-LAST:event_jButton4ActionPerformed | |||
/** | |||
* @param args the command line arguments | |||
*/ | |||
public static void main(String args[]) { | |||
/* Set the Nimbus look and feel */ | |||
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> | |||
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. | |||
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html | |||
*/ | |||
try { | |||
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { | |||
if ("Nimbus".equals(info.getName())) { | |||
javax.swing.UIManager.setLookAndFeel(info.getClassName()); | |||
break; | |||
} | |||
} | |||
} catch (ClassNotFoundException ex) { | |||
java.util.logging.Logger.getLogger(Filtrado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} catch (InstantiationException ex) { | |||
java.util.logging.Logger.getLogger(Filtrado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} catch (IllegalAccessException ex) { | |||
java.util.logging.Logger.getLogger(Filtrado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} catch (javax.swing.UnsupportedLookAndFeelException ex) { | |||
java.util.logging.Logger.getLogger(Filtrado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} | |||
//</editor-fold> | |||
/* Create and display the form */ | |||
java.awt.EventQueue.invokeLater(new Runnable() { | |||
public void run() { | |||
new Filtrado().setVisible(true); | |||
} | |||
}); | |||
} | |||
// Variables declaration - do not modify//GEN-BEGIN:variables | |||
private javax.swing.JButton jButton1; | |||
private javax.swing.JButton jButton2; | |||
private javax.swing.JButton jButton3; | |||
private javax.swing.JButton jButton4; | |||
private javax.swing.JLabel jLabel1; | |||
private javax.swing.JLabel jLabel2; | |||
private javax.swing.JPanel jPanel1; | |||
private javax.swing.JPanel jPanel2; | |||
private javax.swing.JPanel jPanel3; | |||
// End of variables declaration//GEN-END:variables | |||
private void AdaptiveMedian() { | |||
AdaptiveMedian mediana =new AdaptiveMedian(); | |||
mediana.showDialog(null, null, null); | |||
} | |||
private void SRM (){ | |||
SRM srm1 = new SRM(); | |||
} | |||
} |
@ -0,0 +1,21 @@ | |||
/* | |||
* To change this license header, choose License Headers in Project Properties. | |||
* To change this template file, choose Tools | Templates | |||
* and open the template in the editor. | |||
*/ | |||
package filtro_chido; | |||
public class Filtro_Chido { | |||
/** | |||
* @param args the command line arguments | |||
*/ | |||
public static void main(String[] args) { | |||
Filtrado fl = new Filtrado(); | |||
fl.show(); | |||
} | |||
} |
@ -0,0 +1,27 @@ | |||
/* | |||
* To change this license header, choose License Headers in Project Properties. | |||
* To change this template file, choose Tools | Templates | |||
* and open the template in the editor. | |||
*/ | |||
package filtro_chido; | |||
import java.awt.Graphics; | |||
import javax.swing.ImageIcon; | |||
import javax.swing.JPanel; | |||
class Imagen extends javax.swing.JPanel { | |||
int x, y; | |||
public Imagen(JPanel jPanel1) { | |||
this.x = jPanel1.getWidth(); | |||
this.y = jPanel1.getHeight(); | |||
this.setSize(x, y); | |||
} | |||
public void paint(Graphics g, String img) { | |||
ImageIcon Img = new ImageIcon(getClass().getResource("/Images/imagen1.png")); | |||
g.drawImage(Img.getImage(), 0, 0, x, y, null); | |||
} | |||
} |
@ -0,0 +1,378 @@ | |||
package filtro_chido; | |||
import ij.IJ; | |||
import ij.ImagePlus; | |||
import ij.ImageStack; | |||
import ij.gui.GenericDialog; | |||
import ij.plugin.filter.PlugInFilter; | |||
import static ij.plugin.filter.PlugInFilter.DOES_8G; | |||
import static ij.plugin.filter.PlugInFilter.NO_CHANGES; | |||
import ij.process.ByteProcessor; | |||
import ij.process.FloatProcessor; | |||
import ij.process.ImageProcessor; | |||
import ij.process.ShortProcessor; | |||
import java.util.Arrays; | |||
public class SRM implements PlugInFilter { | |||
ImagePlus image; | |||
public int setup(String arg, ImagePlus image) { | |||
this.image = image; | |||
return DOES_8G | NO_CHANGES; | |||
} | |||
public void run(ImageProcessor ip) { | |||
boolean isStack = image.getStackSize() > 1; | |||
GenericDialog gd = new GenericDialog("SRM"); | |||
gd.addNumericField("Q", Q, 2); | |||
gd.addCheckbox("showAverages", true); | |||
if (isStack) | |||
gd.addCheckbox("3d", true); | |||
gd.showDialog(); | |||
if (gd.wasCanceled()) | |||
return; | |||
Q = (float)gd.getNextNumber(); | |||
boolean showAverages = gd.getNextBoolean(); | |||
boolean do3D = isStack ? gd.getNextBoolean() : false; | |||
if (do3D) | |||
srm3D(showAverages).show(); | |||
else | |||
srm2D(ip, showAverages).show(); | |||
} | |||
final float g = 256; // number of different intensity values | |||
protected float Q = 25; //25; // complexity of the assumed distributions | |||
protected float delta; | |||
protected float factor, logDelta; | |||
float[] average; | |||
int[] count; | |||
int[] regionIndex; // if < 0, it is -1 - actual_regionIndex | |||
int[] nextNeighbor, neighborBucket; | |||
protected ImagePlus srm3D(boolean showAverages) { | |||
int w = image.getWidth(), h = image.getHeight(); | |||
int d = image.getStackSize(); | |||
delta = 1f / (6 * w * h * d); | |||
factor = g * g / 2 / Q; | |||
logDelta = 2f * (float)Math.log(6 * w * h * d); | |||
IJ.showStatus("Initializing regions"); | |||
initializeRegions3D(w, h, d); | |||
IJ.showStatus("Initializing neighbors"); | |||
initializeNeighbors3D(w, h, d); | |||
IJ.showStatus("Merging neighbors"); | |||
mergeAllNeighbors3D(w, h); | |||
IJ.showStatus("Making stack"); | |||
ImageStack stack = new ImageStack(w, h); | |||
if (showAverages) | |||
for (int k = 0; k < d; k++) { | |||
int off = k * w * h; | |||
float[] p = new float[w * h]; | |||
for (int i = 0; i < w * h; i++) | |||
p[i] = average[getRegionIndex(i + off)]; | |||
stack.addSlice(null, new FloatProcessor(w, h, | |||
p, null)); | |||
} | |||
else { | |||
int regionCount = consolidateRegions(); | |||
if (regionCount > 1<<16) | |||
IJ.showMessage("Found " + regionCount | |||
+ " regions, which does not fit" | |||
+ " in 16-bit."); | |||
for (int k = 0; k < d; k++) { | |||
ImageProcessor ip; | |||
int off = k * w * h; | |||
if (regionCount > 1<<8) { | |||
short[] p = new short[w * h]; | |||
for (int i = 0; i < p.length; i++) | |||
p[i] = (short)regionIndex[i | |||
+ off]; | |||
ip = new ShortProcessor(w, h, p, null); | |||
} | |||
else { | |||
byte[] p = new byte[w * h]; | |||
for (int i = 0; i < p.length; i++) | |||
p[i] = (byte)regionIndex[i | |||
+ off]; | |||
ip = new ByteProcessor(w, h, p, null); | |||
} | |||
stack.addSlice(null, ip); | |||
} | |||
} | |||
IJ.showStatus(""); | |||
String title = image.getTitle() + " (SRM3D Q=" + Q + ")"; | |||
return new ImagePlus(title, stack); | |||
} | |||
protected ImagePlus srm2D(ImageProcessor ip, boolean showAverages) { | |||
int w = ip.getWidth(), h = ip.getHeight(); | |||
delta = 1f / (6 * w * h); | |||
factor = g * g / 2 / Q; | |||
logDelta = 2f * (float)Math.log(6 * w * h); | |||
byte[] pixel = (byte[])ip.getPixels(); | |||
initializeRegions2D(pixel, ip.getWidth(), ip.getHeight()); | |||
initializeNeighbors2D(pixel, w, h); | |||
mergeAllNeighbors2D(w); | |||
if (showAverages) { | |||
for (int i = 0; i < average.length; i++) | |||
average[i] = average[getRegionIndex(i)]; | |||
ip = new FloatProcessor(w, h, average, null); | |||
} | |||
else { | |||
int regionCount = consolidateRegions(); | |||
if (regionCount > 1<<8) { | |||
if (regionCount > 1<<16) | |||
IJ.showMessage("Found " + regionCount | |||
+ " regions, which does not fit" | |||
+ " in 16-bit."); | |||
short[] pixel16 = new short[w * h]; | |||
for (int i = 0; i < pixel16.length; i++) | |||
pixel16[i] = (short)regionIndex[i]; | |||
ip = new ShortProcessor(w, h, pixel16, null); | |||
} | |||
else { | |||
pixel = new byte[w * h]; | |||
for (int i = 0; i < pixel.length; i++) | |||
pixel[i] = (byte)regionIndex[i]; | |||
ip = new ByteProcessor(w, h, pixel, null); | |||
} | |||
} | |||
String title = image.getTitle() + " (SRM Q=" + Q + ")"; | |||
return new ImagePlus(title, ip); | |||
} | |||
void initializeRegions2D(byte[] pixel, int w, int h) { | |||
average = new float[w * h]; | |||
count = new int[w * h]; | |||
regionIndex = new int[w * h]; | |||
for (int i = 0; i < average.length; i++) { | |||
average[i] = pixel[i] & 0xff; | |||
count[i] = 1; | |||
regionIndex[i] = i; | |||
} | |||
} | |||
void initializeRegions3D(int w, int h, int d) { | |||
average = new float[w * h * d]; | |||
count = new int[w * h * d]; | |||
regionIndex = new int[w * h * d]; | |||
for (int j = 0; j < d; j++) { | |||
byte[] pixel = | |||
(byte[])image.getStack().getProcessor(j | |||
+ 1).getPixels(); | |||
int offset = j * w * h; | |||
for (int i = 0; i < w * h; i++) { | |||
average[offset + i] = pixel[i] & 0xff; | |||
count[offset + i] = 1; | |||
regionIndex[offset + i] = offset + i; | |||
} | |||
} | |||
} | |||
protected void addNeighborPair(int neighborIndex, | |||
byte[] pixel, int i1, int i2) { | |||
int difference = Math.abs((pixel[i1] & 0xff) | |||
- (pixel[i2] & 0xff)); | |||
nextNeighbor[neighborIndex] = neighborBucket[difference]; | |||
neighborBucket[difference] = neighborIndex; | |||
} | |||
void initializeNeighbors2D(byte[] pixel, int w, int h) { | |||
nextNeighbor = new int[2 * w * h]; | |||
// bucket sort | |||
neighborBucket = new int[256]; | |||
Arrays.fill(neighborBucket, -1); | |||
for (int j = h - 1; j >= 0; j--) | |||
for (int i = w - 1; i >= 0; i--) { | |||
int index = i + w * j; | |||
int neighborIndex = 2 * index; | |||
// vertical | |||
if (j < h - 1) | |||
addNeighborPair(neighborIndex + 1, | |||
pixel, index, index + w); | |||
// horizontal | |||
if (i < w - 1) | |||
addNeighborPair(neighborIndex, | |||
pixel, index, index + 1); | |||
} | |||
} | |||
protected void addNeighborPair(int neighborIndex, | |||
byte[] pixel, byte[] nextPixel, int i) { | |||
int difference = Math.abs((pixel[i] & 0xff) | |||
- (nextPixel[i] & 0xff)); | |||
nextNeighbor[neighborIndex] = neighborBucket[difference]; | |||
neighborBucket[difference] = neighborIndex; | |||
} | |||
void initializeNeighbors3D(int w, int h, int d) { | |||
nextNeighbor = new int[3 * w * h * d]; | |||
// bucket sort | |||
neighborBucket = new int[256]; | |||
Arrays.fill(neighborBucket, -1); | |||
byte[] nextPixel = null; | |||
for (int k = d - 1; k >= 0; k--) { | |||
byte[] pixel = | |||
(byte[])image.getStack().getProcessor(k | |||
+ 1).getPixels(); | |||
for (int j = h - 1; j >= 0; j--) | |||
for (int i = w - 1; i >= 0; i--) { | |||
int index = i + w * j; | |||
int neighborIndex = | |||
3 * (index + k * w * h); | |||
// depth | |||
if (nextPixel != null) | |||
addNeighborPair(neighborIndex | |||
+ 2, pixel, | |||
nextPixel, index); | |||
// vertical | |||
if (j < h - 1) | |||
addNeighborPair(neighborIndex | |||
+ 1, pixel, | |||
index, index + w); | |||
// horizontal | |||
if (i < w - 1) | |||
addNeighborPair(neighborIndex, | |||
pixel, | |||
index, index + 1); | |||
} | |||
nextPixel = pixel; | |||
} | |||
} | |||
// recursively find out the region index for this pixel | |||
int getRegionIndex(int i) { | |||
i = regionIndex[i]; | |||
while (i < 0) | |||
i = regionIndex[-1 - i]; | |||
return i; | |||
} | |||
// should regions i1 and i2 be merged? | |||
boolean predicate(int i1, int i2) { | |||
float difference = average[i1] - average[i2]; | |||
/* | |||
* This would be the non-relaxed predicate mentioned in the | |||
* paper. | |||
* | |||
* return difference * difference < | |||
factor * (1f / count[i1] + 1f / count[i2]); | |||
* | |||
*/ | |||
float log1 = (float)Math.log(1 + count[i1]) | |||
* (g < count[i1] ? g : count[i1]); | |||
float log2 = (float)Math.log(1 + count[i2]) | |||
* (g < count[i2] ? g : count[i2]); | |||
return difference * difference < | |||
.1f * factor * ((log1 + logDelta) / count[i1] | |||
+ ((log2 + logDelta) / count[i2])); | |||
} | |||
void mergeAllNeighbors2D(int w) { | |||
for (int i = 0; i < neighborBucket.length; i++) { | |||
int neighborIndex = neighborBucket[i]; | |||
while (neighborIndex >= 0) { | |||
int i1 = neighborIndex / 2; | |||
int i2 = i1 | |||
+ (0 == (neighborIndex & 1) ? 1 : w); | |||
i1 = getRegionIndex(i1); | |||
i2 = getRegionIndex(i2); | |||
if (predicate(i1, i2)) | |||
mergeRegions(i1, i2); | |||
neighborIndex = nextNeighbor[neighborIndex]; | |||
} | |||
} | |||
} | |||
void mergeAllNeighbors3D(int w, int h) { | |||
for (int i = 0; i < neighborBucket.length; i++) { | |||
int neighborIndex = neighborBucket[i]; | |||
IJ.showProgress(i, neighborBucket.length); | |||
while (neighborIndex >= 0) { | |||
int i1 = neighborIndex / 3; | |||
int i2 = i1 | |||
+ (0 == (neighborIndex % 3) ? 1 : | |||
(1 == (neighborIndex % 3) ? w : | |||
w * h)); | |||
i1 = getRegionIndex(i1); | |||
i2 = getRegionIndex(i2); | |||
if (i1 != i2 && predicate(i1, i2)) | |||
mergeRegions(i1, i2); | |||
neighborIndex = nextNeighbor[neighborIndex]; | |||
} | |||
} | |||
IJ.showProgress(neighborBucket.length, neighborBucket.length); | |||
} | |||
void mergeRegions(int i1, int i2) { | |||
if (i1 == i2) | |||
return; | |||
int mergedCount = count[i1] + count[i2]; | |||
float mergedAverage = (average[i1] * count[i1] | |||
+ average[i2] * count[i2]) / mergedCount; | |||
// merge larger index into smaller index | |||
if (i1 > i2) { | |||
average[i2] = mergedAverage; | |||
count[i2] = mergedCount; | |||
regionIndex[i1] = -1 - i2; | |||
} | |||
else { | |||
average[i1] = mergedAverage; | |||
count[i1] = mergedCount; | |||
regionIndex[i2] = -1 - i1; | |||
} | |||
} | |||
int consolidateRegions() { | |||
int count = 0; | |||
for (int i = 0; i < regionIndex.length; i++) | |||
if (regionIndex[i] < 0) | |||
regionIndex[i] = | |||
regionIndex[-1 - regionIndex[i]]; | |||
else | |||
regionIndex[i] = count++; | |||
return count; | |||
} | |||
} |
@ -0,0 +1,50 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> | |||
<Properties> | |||
<Property name="defaultCloseOperation" type="int" value="3"/> | |||
</Properties> | |||
<SyntheticProperties> | |||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/> | |||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/> | |||
</SyntheticProperties> | |||
<AuxValues> | |||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | |||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | |||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | |||
</AuxValues> | |||
<Layout> | |||
<DimensionLayout dim="0"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="1" attributes="0"> | |||
<EmptySpace max="32767" attributes="0"/> | |||
<Component id="JMCImg" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="-2" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
<DimensionLayout dim="1"> | |||
<Group type="103" groupAlignment="0" attributes="0"> | |||
<Group type="102" alignment="0" attributes="0"> | |||
<EmptySpace max="-2" attributes="0"/> | |||
<Component id="JMCImg" min="-2" max="-2" attributes="0"/> | |||
<EmptySpace max="32767" attributes="0"/> | |||
</Group> | |||
</Group> | |||
</DimensionLayout> | |||
</Layout> | |||
<SubComponents> | |||
<Component class="javax.swing.JFileChooser" name="JMCImg"> | |||
<AuxValues> | |||
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="9"/> | |||
</AuxValues> | |||
</Component> | |||
</SubComponents> | |||
</Form> |
@ -0,0 +1,93 @@ | |||
/* | |||
* To change this license header, choose License Headers in Project Properties. | |||
* To change this template file, choose Tools | Templates | |||
* and open the template in the editor. | |||
*/ | |||
package filtro_chido; | |||
/** | |||
* | |||
* @author Pott | |||
*/ | |||
public class buscarImg extends javax.swing.JFrame { | |||
/** | |||
* Creates new form buscarImg | |||
*/ | |||
public buscarImg() { | |||
initComponents(); | |||
} | |||
/** | |||
* This method is called from within the constructor to initialize the form. | |||
* WARNING: Do NOT modify this code. The content of this method is always | |||
* regenerated by the Form Editor. | |||
*/ | |||
@SuppressWarnings("unchecked") | |||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | |||
private void initComponents() { | |||
JMCImg = new javax.swing.JFileChooser(); | |||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | |||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); | |||
getContentPane().setLayout(layout); | |||
layout.setHorizontalGroup( | |||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() | |||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |||
.addComponent(JMCImg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addContainerGap()) | |||
); | |||
layout.setVerticalGroup( | |||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||
.addGroup(layout.createSequentialGroup() | |||
.addContainerGap() | |||
.addComponent(JMCImg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |||
); | |||
pack(); | |||
}// </editor-fold>//GEN-END:initComponents | |||
/** | |||
* @param args the command line arguments | |||
*/ | |||
public static void main(String args[]) { | |||
/* Set the Nimbus look and feel */ | |||
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> | |||
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. | |||
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html | |||
*/ | |||
try { | |||
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { | |||
if ("Nimbus".equals(info.getName())) { | |||
javax.swing.UIManager.setLookAndFeel(info.getClassName()); | |||
break; | |||
} | |||
} | |||
} catch (ClassNotFoundException ex) { | |||
java.util.logging.Logger.getLogger(buscarImg.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} catch (InstantiationException ex) { | |||
java.util.logging.Logger.getLogger(buscarImg.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} catch (IllegalAccessException ex) { | |||
java.util.logging.Logger.getLogger(buscarImg.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} catch (javax.swing.UnsupportedLookAndFeelException ex) { | |||
java.util.logging.Logger.getLogger(buscarImg.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} | |||
//</editor-fold> | |||
//</editor-fold> | |||
/* Create and display the form */ | |||
java.awt.EventQueue.invokeLater(new Runnable() { | |||
public void run() { | |||
new buscarImg().setVisible(true); | |||
} | |||
}); | |||
} | |||
// Variables declaration - do not modify//GEN-BEGIN:variables | |||
public static javax.swing.JFileChooser JMCImg; | |||
// End of variables declaration//GEN-END:variables | |||
} |