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

				// Создаем панель для пороговых значений
				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;
		    }