import java.awt.image.BufferedImage;
public class pixel
{
int width;
int height;
byte[] R;
byte[] G;
byte[] B;
BufferedImage image;
pixel(BufferedImage image)
{
this.image=image;
width=image.getWidth();
height=image.getHeight();
R=new byte[width*height];
G=new byte[width*height];
B=new byte[width*height];
}
public void getRGB()
{
int c=0;
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
c = image.getRGB(col,row);
R[index] = (byte)((c&0xff0000)>>16);
G[index] = (byte)((c&0xff00)>>8);
B[index] = (byte)(c&0xff);
}
}
}
public void setRGB()
{
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
image.setRGB(col,row,0xFF000000|((R[index]<<16)+(G[index]<<8)+(B[index])));
}
}
}
public void gray()
{
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
R[index]=G[index]=B[index]=(byte)(((R[index]&0x0FF)*29+(G[index]&0x0FF)*150+(B[index]&0x0FF)*77)/256);
}
}
}
public void binary()
{
double sumB=0.;
double sumS=0.;
long sumBT=0;
long sumST=0;
int t0,t1,t2,t=127;
do{
t0=t;
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
if((R[index]&0x0FF)>t)
{
sumB+=(R[index]&0x0FF);
sumBT++;
}
else
{
sumS+=(R[index]&0x0FF);
sumST++;
}
}
}
t2=(int)(sumB/sumBT);
t1=(int)(sumS/sumST);
sumB=0.;
sumBT=0;
sumS=0.;
sumST=0;
t=((t1+t2)/2);
}while(t!=t0);
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
if((R[index]&0x0FF)>t)
{
R[index]=(byte)0xFF;
}
else
{
R[index]=0;
}
}
}
do{
t0=t;
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
if((G[index]&0x0FF)>t)
{
sumB+=(G[index]&0x0FF);
sumBT++;
}
else
{
sumS+=(G[index]&0x0FF);
sumST++;
}
}
}
t2=(int)(sumB/sumBT);
t1=(int)(sumS/sumST);
sumB=0.;
sumBT=0;
sumS=0.;
sumST=0;
t=((t1+t2)/2);
}while(t!=t0);
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
if((G[index]&0x0FF)>t)
{
G[index]=(byte)0xFF;
}
else
{
G[index]=0;
}
}
}
do{
t0=t;
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
if((B[index]&0x0FF)>t)
{
sumB+=(B[index]&0x0FF);
sumBT++;
}
else
{
sumS+=(B[index]&0x0FF);
sumST++;
}
}
}
t2=(int)(sumB/sumBT);
t1=(int)(sumS/sumST);
sumB=0.;
sumBT=0;
sumS=0.;
sumST=0;
t=((t1+t2)/2);
}while(t!=t0);
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
if((B[index]&0x0FF)>t)
{
B[index]=(byte)0xFF;
}
else
{
B[index]=0;
}
}
}
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
int index = row * width + col;
if(((R[index]&0x0FF)+(G[index]&0x0FF)+(B[index]&0x0FF))>200)
{
R[index]=G[index]=B[index]=(byte)0xFF;
}
else
{
R[index]=G[index]=B[index]=0;
}
}
}
}
public void test1()
{
for (int row = 20; row < 120; row++)
{
for (int col = 20; col < 120; col++)
{
int index = row * width + col;
{
R[index]=G[index]=B[index]=(byte)0xFF;
}
}
}
}
public void median()
{
byte[] mR =new byte[9];
byte[] mG =new byte[9];
byte[] mB =new byte[9];
byte[] RT=new byte[width*height];
byte[] GT=new byte[width*height];
byte[] BT=new byte[width*height];
for (int row = 0+1; row < height-1; row++)
{
for (int col = 0+1; col < width-1; col++)
{
for(int y=0;y<3;y++)
{
for(int x=0;y<3;y++)
{
int index = (row+y-1) * width + col+x-1;
int index0=y * 3 + x;
mR[index0]=R[index];
mG[index0]=G[index];
mB[index0]=B[index];
}
}
for(int t=9;t>4;t--)//一半冒泡排序
{
for(int n=1;n<t;n++)
{
if((mR[n-1]&0x0FF)>(mR[n]&0x0FF))
{
byte a=mR[n];
mR[n]=mR[n-1];
mR[n-1]=a;
}
if((mG[n-1]&0x0FF)>(mG[n]&0x0FF))
{
byte a=mG[n];
mG[n]=mG[n-1];
mG[n-1]=a;
}
if((mB[
lizeyuanyuan
- 粉丝: 0
- 资源: 1
最新资源
- 基于mmse的不确定电力系统有限次测量的分析估计 源代码, matlab代码按照高水平文章复现,保证正确 大量可再生分布式能源的预期渗透正推动下一代电力系统走向不确定性,这可能对状态估计的可靠性和复杂
- 西南科技大学数据分析期末大作业.zip
- 西门子PLC1200立体库机器人码垛机伺服视觉AGV程序 包括2台西门子PLC1215程序和2台西门子触摸屏TP700程序 PLC和基恩士相机视觉定位Modbus TCP通讯(SCL语言) PLC和A
- 知名扫地机代码方案 某知名大厂扫地机代码 适合需要学习项目与代码规范的工程师 硬件驱动包含 陀螺仪姿态传感器bmi160、电源管理bq24733等 软件驱动包括 IIC、PWM、SPI、多路A
- siddhi-execution-json jar包用于在处理事件中对json字符串进行处理
- 直流充电桩,双枪控制板方案,需要的砸单
- 埃斯顿量产控制器 埃斯顿量产伺服控制器C代码和硬件图纸 1)TMS320F28335+FPGA全套代码;全C写的DSP代码,VHDL写的FPGA代码(Lattice MXO1200) 2)AD电
- 信捷XC PLC与西门子V20变频器通讯程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等 程序采用轮询,可靠稳定 器件:信捷XC3的PLC,西门子V20
- 台达DVP ES系列PLC与3台英威腾GD变频器通讯 程序带注释,并附送昆仑通态和威纶通触摸屏程序,有接线方式,设置 器件:台达DVP ES系列的PLC,3台英威腾GD系列变频器,昆仑通态,威纶通触
- 控制系统的数学建模,被控对象的数学模型建立,simulink模型实现 提供四旋翼和带尾翼直升机,共轴式直升机的数学模型、simulink模型,推导 提供资料,文献 刚体飞行动力学模型,运动学模型
- 深度学习中的Fashion-MNIST数据集与卷积神经网络实现及其训练分析
- MPC控制器设计,模型预测控制,线性时变模型预测控制,LTV MPC,提供理论讲解与应用实现 提供MPC算法、LTV MPC 算法在直升机和四旋翼中的应用实例 提供模型预测控制资料 提供matl
- Flink Forward Asia 2024 上海站(脱敏)PPT合集.zip
- Node.js安装与环境配置指南:覆盖Windows、macOS及Linux系统全流程
- 微信小程序开发全流程详解:从准备到发布的全面指南与关键技术解析
- 斑马打印机C#控制程序源代码,适合自己进行二次开发 文档齐全,包括驱动程序和如何设置斑马打印机的说明文档 源代码可以打印条形码标签和二维码标签
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈