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

@@ -11,7 +11,7 @@ import domain.image.GrayScaleMatrix;
import domain.image.Image;
import domain.image.processing.complex.ComplexMatrix;
import services.ImageService;
import ui.interfaces.IDoubleMatrix;
import ui.abstractions.IDoubleMatrix;
import java.io.IOException;

View File

@@ -1,21 +1,28 @@
package presenters;
import app.state.FilteringState;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject;
import domain.events.filtering.HighPassChangedEvent;
import domain.events.filtering.LowPassChangedEvent;
import domain.image.GrayScaleMatrix;
import domain.image.Image;
import services.FilteringService;
import services.ImageService;
import ui.implementation.views.FilteringView;
import ui.interfaces.IFilteringView;
import ui.abstractions.IFilteringView;
public class FilteringPresenter {
private final FilteringState state;
private final ImageService imageService;
private final FilteringService filteringService;
private IFilteringView view;
@Inject
public FilteringPresenter(ImageService imageService, FilteringService filteringService) {
public FilteringPresenter(FilteringState state, ImageService imageService, FilteringService filteringService) {
this.state = state;
this.state.register(this);
this.imageService = imageService;
this.filteringService = filteringService;
}
@@ -24,17 +31,25 @@ public class FilteringPresenter {
this.view = view;
}
public Image computeLowPassFiltering(){
public void computeLowPassFiltering(int percentage){
GrayScaleMatrix matrix = imageService.getGrayScale();
return filteringService.lowPassFiltering(matrix);
Image image = filteringService.lowPassFiltering(matrix, (double) percentage /100);
this.state.setLowPass(image);
}
public Image computeHighPassFiltering(){
public void computeHighPassFiltering(int percentage){
GrayScaleMatrix matrix = imageService.getGrayScale();
return filteringService.highPassFiltering(matrix);
Image image = filteringService.highPassFiltering(matrix, (double) percentage /100);
this.state.setHighPass(image);
}
public Image getImage(){
return imageService.getImage();
@Subscribe
public void onLowPassUpdate(LowPassChangedEvent event){
view.updateLowPassFiltering(event.image());
}
@Subscribe
public void onHighPassUpdate(HighPassChangedEvent event){
view.updateHighPassFiltering(event.image());
}
}

View File

@@ -9,7 +9,7 @@ import domain.events.ModeChangedEvent;
import domain.image.Image;
import services.ImageService;
import services.ModeService;
import ui.interfaces.IMainView;
import ui.abstractions.IMainView;
/**
* @author Laurent Crema

View File

@@ -6,7 +6,7 @@ import domain.common.Mode;
import domain.image.GrayScaleMatrix;
import services.ImageService;
import services.ModeService;
import ui.interfaces.INavBar;
import ui.abstractions.INavBar;
import java.io.File;
import java.io.IOException;