在UWP C#中应用高通滤波器

时间:2016-05-08 11:35:14

标签: c# image-processing

我正在尝试在我的UWP Windows 10应用程序中应用高通过滤器。首先,我模糊了图像。然后我从原始图像中减去模糊图像。我得到的结果就像是

enter image description here

我在网上看到了不同的高通滤波示例,结果应该是这样的

enter image description here

我用photoshop完成了这个。我想在应用上述算法后得到这个结果,但是得到黑色图像。

我已按照this article进行操作。

1 个答案:

答案 0 :(得分:1)

我试图实现你想要做的事情,谢天谢地我直接从MATLAB论坛得到了一个代码,看起来我得到了相当不错的结果,你可以看看下面的图片。 enter image description here

我认为你在这里缺少的是正确地对图像进行灰度缩放。我认为你正在将高通滤镜直接应用于彩色图像并期待一个灰度图像。

我还将分享我实施的代码,以便您也可以试一试。

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

我希望有所帮助。如果它有帮助,请不要忘记投票或接受答案。