Переделай код, при преобразовании изображения присваивался черный цвет и получалось бинарное изображение. То есть сделать яркостный срез. И чтобы делалась гистограмма исходного и преобразованного изображения. И можно было вводить два порога. // Гистограмма для brightnessImage()
			private void brightnessImage() {
			if (image != null) {
			BufferedImage brightnessSliceImage = brightnessSlice(image, 100, 200); // яркость в диапазоне [100, 200]
			setImageIcon(brightnessSliceImage);
			saveImage(brightnessSliceImage);

			// Создаем гистограмму преобразованного изображения
			int[] histogram = new int[256];
			for (int i = 0; i < brightnessSliceImage.getWidth(); i++) {
			for (int j = 0; j < brightnessSliceImage.getHeight(); j++) {
			int pixel = brightnessSliceImage.getRGB(i, j);
			int red = (pixel >> 16) & 0xff;
			int green = (pixel >> 8) & 0xff;
			int blue = pixel & 0xff;
			// Вычисляем яркость пикселя
			int brightness = (int) (0.2126 * red + 0.7152 * green + 0.0722 * blue);
			histogram[brightness]++;
			}
			}

			// Создаем окно для отображения гистограммы
			JFrame histogramFrame = new JFrame("Гистограмма");
			histogramFrame.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));

			// Создаем панель для гистограммы
			JPanel histogramPanel = new JPanel() {
			@Override
			protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			int max = Arrays.stream(histogram).max().getAsInt();
			for (int i = 0; i < 256; i++) {
			int height = (int) (300.0 * histogram[i] / max);
			g.fillRect(i, 300 - height, 1, height);
			}
			}
			};
			histogramPanel.setPreferredSize(new Dimension(256, 300));

			histogramFrame.add(new JLabel("Гистограмма яркости"));
			histogramFrame.add(histogramPanel);
			histogramFrame.pack();
			histogramFrame.setLocationRelativeTo(null);
			histogramFrame.setVisible(true);
			}
			}

			// Гистограмма для contrastImage()
			private void contrastImage() {
			if (image != null) {
			BufferedImage contrastStretchedImage = linearContrastStretch(image);
			setImageIcon(contrastStretchedImage);
			saveImage(contrastStretchedImage);

			// Создаем гистограмму преобразованного изображения
			int[] histogram = new int[256];
			for (int i = 0; i < contrastStretchedImage.getWidth(); i++) {
			for (int j = 0; j < contrastStretchedImage.getHeight(); j++) {
			int pixel = contrastStretchedImage.getRGB(i, j);
			int red = (pixel >> 16) & 0xff;
			int green = (pixel >> 8) & 0xff;
			int blue = pixel & 0xff;
			// Вычисляем яркость пикселя
			int brightness = (int) (0.2126 * red + 0.7152 * green + 0.0722 * blue);
			histogram[brightness]++;
			}
			}

			// Создаем окно для отображения гистограммы
			JFrame histogramFrame = new JFrame("Гистограмма");
			histogramFrame.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));

			// Создаем панель для гистограммы
			JPanel histogramPanel = new JPanel() {
			@Override
			protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			int max = Arrays.stream(histogram).max().getAsInt();
			for (int i = 0; i < 256; i++) {
			int height = (int) (300.0 * histogram[i] / max);
			g.fillRect(i, 300 - height, 1, height);
			}
			}
			};
			histogramPanel.setPreferredSize(new Dimension(256, 300));

			histogramFrame.add(new JLabel("Гистограмма контраста"));
			histogramFrame.add(histogramPanel);
			histogramFrame.pack();
			histogramFrame.setLocationRelativeTo(null);
			histogramFrame.setVisible(true);
			}
			}

	private BufferedImage brightnessSlice(BufferedImage image, int minBrightness, int maxBrightness) {
		BufferedImage brightnessSliceImage = new BufferedImage(image.getWidth(), image.getHeight(),
		BufferedImage.TYPE_INT_RGB);
		BufferedImage blackImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
		for (int i = 0; i < image.getWidth(); i++) {
		for (int j = 0; j < image.getHeight(); j++) {
		int rgb = image.getRGB(i, j);
		int r = (rgb & 0x00ff0000) >> 16;
		int g = (rgb & 0x0000ff00) >> 8;
		int b = rgb & 0x000000ff;
		int brightness = (int) (0.2126 * r + 0.7152 * g + 0.0722 * b); // расчет яркости пикселя
		if (brightness >= minBrightness && brightness <= maxBrightness) {
		brightnessSliceImage.setRGB(i, j, rgb);
		} else {
		brightnessSliceImage.setRGB(i, j, Color.BLACK.getRGB());
		blackImage.setRGB(i, j, rgb);
		}
		}
		}
		// выводим два среза: яркостной с черным цветом и без изменения
		ImageIcon icon = new ImageIcon(brightnessSliceImage);
		ImageIcon icon2 = new ImageIcon(blackImage);
		JOptionPane.showMessageDialog(this, icon, "Brightness Slice with Black", JOptionPane.INFORMATION_MESSAGE);
		JOptionPane.showMessageDialog(this, icon2, "Original Image", JOptionPane.INFORMATION_MESSAGE);
		return brightnessSliceImage;
		}