Сделай порог ,относительно которого яркость пикселов меняется на черную или белую.private void processImage() {
				if (image != null) {
				int threshold = 100; // устанавливаем значение по умолчанию

				// Создаем панель для пороговых значений
				JPanel thresholdPanel = new JPanel(new GridLayout(1, 2));

				// Создаем текстовое поле для порога
				JTextField thresholdField = new JTextField(Integer.toString(threshold));
				thresholdPanel.add(new JLabel("Порог: "));
				thresholdPanel.add(thresholdField);

				// Создаем окно для ввода пороговых значений
				int result = JOptionPane.showConfirmDialog(null, thresholdPanel, "Введите пороговое значение", JOptionPane.OK_CANCEL_OPTION);
				if (result == JOptionPane.OK_OPTION) {
				// Обновляем порог
				threshold = Integer.parseInt(thresholdField.getText());

				BufferedImage binarizedImage = binarizeImage(image, threshold);
				if (binarizedImage != null) {
				// ИЗМЕНЕНИЕ: передаем в метод setImageIcon() бинаризованное изображение
				setImageIcon(binarizedImage);
				saveImage(binarizedImage);

				// Создаем гистограмму для изображения
				int[] histogram = new int[256];

				// Создаем гистограмму для исходного изображения
				for (int i = 0; i < image.getWidth(); i++) {
				for (int j = 0; j < image.getHeight(); j++) {
				int pixel = image.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]++;
				}
				}

				// Обновляем гистограмму для бинаризованного изображения
				int[] binarizedHistogram = new int[256];
				for (int i = 0; i < binarizedImage.getWidth(); i++) {
				for (int j = 0; j < binarizedImage.getHeight(); j++) {
				int pixel = binarizedImage.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);
				binarizedHistogram[brightness]++;
				}
				}

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

				// Создаем панель для гистограммы исходного изображения
				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);

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

				histogramFrame.add(new JLabel("Гистограмма бинаризованного изображения"));
				histogramFrame.add(histogramPanel2);

				histogramFrame.pack();
				histogramFrame.setLocationRelativeTo(null);
				histogramFrame.setVisible(true);
				} else {
				JOptionPane.showMessageDialog(null, "Ошибка при бинаризации изображения.", "Ошибка", JOptionPane.ERROR_MESSAGE);
				}
				}
				}
				}private BufferedImage binarizeImage(BufferedImage image, int threshold) {
			int width = image.getWidth();
			int height = image.getHeight();
			BufferedImage binarizedImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
			Graphics2D g = binarizedImage.createGraphics();
			g.drawImage(image, 0, 0, null);

			for (int i = 0; i < width; i++) {
			for (int j = 0; j < height; j++) {
			int pixel = binarizedImage.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);

			if (brightness >= threshold) {
			binarizedImage.setRGB(i, j, Color.WHITE.getRGB());
			} else {
			binarizedImage.setRGB(i, j, Color.BLACK.getRGB());
			}
			}
			}
			return binarizedImage;
			}