我正在尝试在我的UWP Windows 10应用程序中应用高通过滤器。首先,我模糊了图像。然后我从原始图像中减去模糊图像。我得到的结果就像是
我在网上看到了不同的高通滤波示例,结果应该是这样的
我用photoshop完成了这个。我想在应用上述算法后得到这个结果,但是得到黑色图像。
我已按照this article进行操作。
答案 0 :(得分:1)
我试图实现你想要做的事情,谢天谢地我直接从MATLAB论坛得到了一个代码,看起来我得到了相当不错的结果,你可以看看下面的图片。
我认为你在这里缺少的是正确地对图像进行灰度缩放。我认为你正在将高通滤镜直接应用于彩色图像并期待一个灰度图像。
我还将分享我实施的代码,以便您也可以试一试。
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
imtool close all; % Close all imtool figures.
clear; % Erase all existing variables.
workspace; % Make sure the workspace panel is showing.
Image = imread('highPassFilter.jpg'); % Image from stack over flow
%converting image to grayscale
grayImage=rgb2gray(Image);
% Get the dimensions of the image. numberOfColorBands should be = 1.
[rows columns numberOfColorBands] = size(grayImage);
% Display the original gray scale image.
subplot(2, 2, 1);
imshow(grayImage, []);
title('Original Grayscale Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'Position', get(0,'Screensize'));
set(gcf,'name','Demo by ImageAnalyst','numbertitle','off')
% Filter 1
kernel1 = -1 * ones(3)/9;
kernel1(2,2) = 8/9
% Filter the image. Need to cast to single so it can be floating point
% which allows the image to have negative values.
filteredImage = imfilter(single(grayImage), kernel1);
% Display the image.
subplot(2, 2, 2);
imshow(filteredImage, []);
title('Filtered Image', 'FontSize', fontSize);
% Filter 2
kernel2 = [-1 -2 -1; -2 12 -2; -1 -2 -1]/16;
% Filter the image. Need to cast to single so it can be floating point
% which allows the image to have negative values.
filteredImage = imfilter(single(grayImage), kernel2);
% Display the image.
subplot(2, 2, 3);
imshow(filteredImage, []);
title('Filtered Image', 'FontSize', fontSize);
我希望有所帮助。如果它有帮助,请不要忘记投票或接受答案。