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