(医学)图像的线性处理Java

图像的线性处理(Java、医学图像处理)
上图:处理前
在这里插入图片描述
处理后:在这里插入图片描述

上代码:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class ch3_1 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedImage bi=ImageIO.read(new File("1.jpg"));		//读取图像
		BufferedImage nbi=xianxing(bi,1.5,-50);						//处理图像
		ImageIO.write(nbi, "jpg", new File("1b.jpg"));		//输出图像
		System.out.println("程序结束!");
	}

	/**
	 * 图像线性变换
	 * @param BufferedImage bi 	原始图像
	 * @param double aa 			变换系数
	 * @param int bb 			亮度系数
	 * @return BufferedImage	变换后图像
	 * */
	public static BufferedImage xianxing(BufferedImage bi,double aa,int bb) {
		int w=bi.getWidth();		//得到图像的宽度
		int h=bi.getHeight();		//得到图像的高度
		BufferedImage nbi=new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);	//创建新图像(临时图像变量)
		//循环遍历每一个像素点
		for(int y=0;y<h;y++) {
			for(int x=0;x<w;x++) {
				//本次实验的重点内容
				int pixel=bi.getRGB(x, y);		//得到坐标为(x,y)处的像素值
				Color c=new Color(pixel);		//转换为Color类,便于处理
				int r=xianxing(c.getRed(),aa,bb);			//红色通道
				int g=xianxing(c.getGreen(),aa,bb);		//绿色通道
				int b=xianxing(c.getBlue(),aa,bb);		//蓝色通道
				Color nc=new Color(r,g,b);		//根据红绿蓝三个通道,合成新颜色
				int rgb=nc.getRGB();			//转换为int类型
				nbi.setRGB(x, y, rgb);			//设置输出图像坐标为(x,y)的像素值
			}
		}		
		return nbi;
	}

	/**
	 * 像素线性变换
	 * */
	private static int xianxing(int pix, double aa, int bb) {
         int y=(int) (aa*pix+bb);
        	if(y>255)y=255;
        	if(y<0)y=0;
        	return y;
        	
				
	}

}



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值