Add low-pass and high-pass filtering

This commit is contained in:
2026-09-22 02:22:13 +02:00
parent cf3cb4d09a
commit 8b1e6ae358
26 changed files with 332 additions and 107 deletions

View File

@@ -6,14 +6,20 @@ import domain.image.processing.filtering.GlobalLinearFiltering;
public class FilteringService {
public Image lowPassFiltering(GrayScaleMatrix matrix) {
GrayScaleMatrix filteredMatrix = GlobalLinearFiltering.lowPassFiltering(matrix, 10);
public Image lowPassFiltering(GrayScaleMatrix matrix, double percentage) {
double cutoff = percentage * getMaxCutoff(matrix.getWidth(), matrix.getHeight());
GrayScaleMatrix filteredMatrix = GlobalLinearFiltering.lowPassFiltering(matrix, cutoff);
return filteredMatrix.toImage();
}
public Image highPassFiltering(GrayScaleMatrix matrix) {
GrayScaleMatrix filteredMatrix = GlobalLinearFiltering.highPassFiltering(matrix, 10);
public Image highPassFiltering(GrayScaleMatrix matrix, double percentage) {
double cutoff = percentage * getMaxCutoff(matrix.getWidth(), matrix.getHeight());
GrayScaleMatrix filteredMatrix = GlobalLinearFiltering.highPassFiltering(matrix, cutoff);
return filteredMatrix.toImage();
}
private double getMaxCutoff(int width, int height) {
return Math.sqrt(Math.pow(width / 2.0, 2) + Math.pow(height / 2.0, 2));
}
}