Когда меняю порог, изображение меняется только один раз. Исправить это. 
		private void processImage() {
			if (image != null) {
			int threshold = 50;
			// Создаем панель для пороговых значений
			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);

			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);
			}

			}
			}