Java 用于高亮度异常图像像素的Swing组件

Java 用于高亮度异常图像像素的Swing组件,java,image,swing,colors,pixel,Java,Image,Swing,Colors,Pixel,我有一张Mars1的灰度图像,里面似乎混合了奇怪的像素 高亮度异常图像像素是否有摆动组件?如果没有,您将如何着手制作这样一个组件 有关火星卫星的原始(768x1536像素)图像,请参阅火星全球勘测器-火星轨道器相机页面 它显示了引起我注意的陨石坑北缘的斑点。下面是一些图像的缩放和裁剪,以突出显示3个黑点。大多数缩放显示的是距离较远(较小)的图像,但最后一个缩放显示的是两倍大小(2倍放大)的部分 所有的地点都在火山口和峡谷之间的边界上。一个靠近最后一张图像的右侧,而另外两个在左侧。我将使用JT

我有一张Mars1的灰度图像,里面似乎混合了奇怪的像素

高亮度异常图像像素是否有摆动组件?如果没有,您将如何着手制作这样一个组件


  • 有关火星卫星的原始(768x1536像素)图像,请参阅火星全球勘测器-火星轨道器相机页面
  • 它显示了引起我注意的陨石坑北缘的斑点。下面是一些图像的缩放和裁剪,以突出显示3个黑点。大多数缩放显示的是距离较远(较小)的图像,但最后一个缩放显示的是两倍大小(2倍放大)的部分


    所有的地点都在火山口和峡谷之间的边界上。一个靠近最后一张图像的右侧,而另外两个在左侧。

    我将使用
    JTable
    来显示和排序像素,并使用带有小半透明十字线的图像来显示所选像素。在
    JLabel
    中显示图像,并且有一个可根据需要定制的基本可行组件

    结果 所有图像均以基于浏览器的8倍缩放比例显示(FF将平滑抖动,这使线条不那么锐利,但几乎同样清晰)

    以像素x/y、RGB和该像素与周围像素之间的“灰度差”为单位的信息被计算并显示在可排序表(3200行)中

    每个标题部分显示一个图像以及表的前六行,指示使用的排序键和选定的行

    感兴趣的图像-未选择任何内容。

    最暗的3个像素看起来很明显,没有任何进一步的提示

    X   Y   RGB     Diff.   Select
    0   0   192     20.75   -
    1   0   186     21.625  -
    2   0   174     25.625  -
    3   0   177     23.375  -
    4   0   175     24.375  -
    5   0   181     24.25   -
    6   0   189     19.75   -
    
    最暗像素

    但这里是用绿色十字线高亮度照射的最暗像素,只是为了检查我们的逻辑

    X   Y   RGB ▲   Diff.   Select
    16  25  0       240.625 TRUE
    6   30  0       240.125 TRUE
    74  7   6       230.875 TRUE
    78  31  112     37.875  -
    79  34  112     22.75   -
    75  37  115     31.375  -
    
    次暗像素

    “下一个最暗”像素与其相邻像素之间的灰度差异就不那么明显了。没有最暗的3个像素那么明显

    X   Y   RGB ▲   Diff.   Select
    16  25  0       240.625 -
    6   30  0       240.125 -
    74  7   6       230.875 -
    78  31  112     37.875  TRUE
    79  34  112     22.75   TRUE
    75  37  115     31.375  TRUE
    
    第二大区别

    像素灰度的第二大差异也同样难以描述。差值从200多个像素降至50以下

    X   Y   RGB     Diff. ▼ Select
    16  25  0       240.625 -
    6   30  0       240.125 -
    74  7   6       230.875 -
    37  18  205     47.875  TRUE
    31  20  209     45.375  TRUE
    59  13  196     44.875  TRUE
    
    结论 根据数据,这3个最暗的像素似乎是异常值&异常值,所以我要说“图像故障”

    代码 这是用于显示/排序亮度和色差以及生成图像的Java代码。它将热链接到第一个裁剪的图像

    import java.awt.*;
    导入java.awt.event.ActionEvent;
    导入java.awt.event.ActionListener;
    导入java.awt.image.buffereImage;
    导入java.util.ArrayList;
    导入java.util.logging.Level;
    导入java.util.logging.Logger;
    导入javax.imageio.imageio;
    导入javax.swing.*;
    导入javax.swing.border.LineBorder;
    导入javax.swing.event.*;
    导入javax.swing.table.*;
    导入java.io.*;
    导入java.net.URL;
    类ImageBrightnessFilter{
    缓冲图像bi;
    JPanel gui=null;
    阵列列表点;
    JLabel;
    ImageBrightnessFilter(BuffereImage bi){
    this.bi=bi;
    }
    公共静态双GetNeightDifference(BuffereImage bi,int x,int y){
    颜色c=新颜色(bi.getRGB(x,y));
    int r=c.getRed();
    int-tot=0;
    对于(int xx=x-1;xx