Переделай код, чтобы не вводить пороги 	
				private void sawtooth4Image() {
					int minTeeth = 1;
					int maxTeeth = 4;
					int teethNumber = userInput("Введите количество зубцов (от " + minTeeth + " до " + maxTeeth + "): ", minTeeth, maxTeeth);
					if (image != null) {
					BufferedImage combinedImage = deepCopy(image); // Создаем копию исходного изображения
					// Запрос значения порогов в цикле до тех пор, пока пользователь не введет правильные значения
					float t1 = 0, t2 = 0;
					boolean valid = false;
					while (!valid) {
					t1 = userInput("Введите значение порога 1: ", 0, 255);
					t2 = userInput("Введите значение порога 2: ", 0, 255);
					if (t2 > t1) {
					BufferedImage[] sawtoothContrastImages = ImageReader.sawtoothContrastU(image, t1, t2, teethNumber); // Создаем массив изображений с контрастированными зубцами
					// Объединяем полученные изображения
					for (int y = 0; y < combinedImage.getHeight(); y++) {
					for (int x = 0; x < combinedImage.getWidth(); x++) {
					boolean isInRange = false;
					int red, green, blue;
					for (BufferedImage img : sawtoothContrastImages) {
					int rgb = img.getRGB(x, y);
					red = (rgb >> 16) & 0xFF;
					green = (rgb >> 8) & 0xFF;
					blue = rgb & 0xFF;
					float gray = (float) ((red + green + blue) / 3.0);
					if (gray >= t1 && gray <= t2) {
					isInRange = true;
					break;
					}
					}
					if (isInRange) {
					int rgb = sawtoothContrastImages[y % sawtoothContrastImages.length].getRGB(x, y);
					red = (rgb >> 16) & 0xFF;
					green = (rgb >> 8) & 0xFF;
					blue = rgb & 0xFF;
					combinedImage.setRGB(x, y, (red << 16) | (green << 8) | blue);
					}
					}
					}
					valid = true;
					} else {
					JOptionPane.showMessageDialog(null, "Значение порога 2 должно быть больше порога 1");
					}
					}
					setImageIcon(combinedImage);
					saveImage(combinedImage);
					int[] originalHistogram = ImageReader.getImageHistogram(image);
					int[] sawtoothHistogram = ImageReader.getImageHistogram(combinedImage);
					JFrame histogramFrame = new JFrame("Гистограммы");
					histogramFrame.setLayout(new GridLayout(1, 2, 10, 10));
					JPanel originalHistogramPanel = ImageReader.createHistogramPanel(originalHistogram, "Гистограмма исходного изображения");
					JPanel sawtoothHistogramPanel = ImageReader.createHistogramPanel(sawtoothHistogram, "Гистограмма после контрастирования");
					histogramFrame.add(originalHistogramPanel);
					histogramFrame.add(sawtoothHistogramPanel);
					histogramFrame.pack();
					histogramFrame.setLocationRelativeTo(null);
					histogramFrame.setVisible(true);
					}
					}

					public static int userInput(String prompt, int min, int max) {
					int input = -1;
					boolean valid = false;
					while (!valid) {
					String inputString = JOptionPane.showInputDialog(prompt);
					try {
					input = Integer.parseInt(inputString);
					if (input >= min && input <= max) {
					valid = true;
					} else {
					JOptionPane.showMessageDialog(null, "Некорректное значение, введите число от " + min + " до " + max);
					}
					} catch (NumberFormatException e) {
					JOptionPane.showMessageDialog(null, "Некорректный ввод, введите число от " + min + " до " + max);
					}
					}
					return input;
					}

						public static BufferedImage[] sawtoothContrastU(BufferedImage image, float t1, float t2, int teethNumber) {
						BufferedImage[] sawtoothContrastImages = new BufferedImage[teethNumber];
						float slope = 255 / (t2 - t1);
						float offset = -t1 * slope;
						for (int i = 0; i < teethNumber; i++) {
						BufferedImage sawtoothImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
						for (int y = 0; y < image.getHeight(); y++) {
						for (int x = 0; x < image.getWidth(); x++) {
						int rgb = image.getRGB(x, y);
						int red = (rgb >> 16) & 0xFF;
						int green = (rgb >> 8) & 0xFF;
						int blue = rgb & 0xFF;
						float gray = (float) ((red + green + blue) / 3.0);
						float sawtoothValue = (gray + (i / (float) teethNumber) * 255) % 510;
						if (sawtoothValue > 255)
						sawtoothValue = 510 - sawtoothValue;
						sawtoothValue = sawtoothValue * slope + offset;
						int sawtoothGray = Math.round(sawtoothValue);
						int sawtoothRGB = (sawtoothGray << 16) | (sawtoothGray << 8) | sawtoothGray;
						sawtoothImage.setRGB(x, y, sawtoothRGB);
						}
						}
						sawtoothContrastImages[i] = sawtoothImage;
						}
						return sawtoothContrastImages;
						}