微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Matlab图像基线偏移消除校正

如何解决Matlab图像基线偏移消除校正

我有这个情节:

enter image description here

,并希望使用Matlab展平其基线/减少偏移量。

基本上像频谱的基线校正一样,但是这里我有一个网格并且无法理解它如何在处理矩阵时展平其基线?基本上,点应该保留,但周围实际上为零。但是,噪音可以保留。

这是图片

enter image description here

我想知道这样的事情是否可行:

page

简单地为Z数据的每个X和Y做一个基线。但是我无法正常工作。 :(

解决方法

注意:另一种尝试的方法可能包括移动/窗口平均以计算要抵消的本地量。

方法1:离散余弦变换(消除直流偏移)

使用离散傅立叶变换(DCT)将图像转换为频域。删除矩阵左上角的DC系数(设置为零),并使用离散傅立叶逆变换(IDCT)将其转换回空间域。

DC Removal 1

Image = imread("Test_Image.jpg");

%Converting image to greyscale if RGB image%
[Image_Height,Image_Width,Depth] = size(Image);
if(Depth == 3)
Image = rgb2gray(Image);
end

%Removing image offset%    
Discrete_Cosine_Transformed_Image = dct2(Image);
Discrete_Cosine_Transformed_Image(1,1) = 0;
Inverse_Discrete_Cosine_Transformed_Image = idct2(Discrete_Cosine_Transformed_Image);

Calibrated_Image = medfilt2(Inverse_Discrete_Cosine_Transformed_Image,[20 20]);

% Plotting the original and thresholded image%
X_Axes = (1:1:Image_Height);
Y_Axes = (1:1:Image_Width);

subplot(1,2,1); surf(X_Axes,Y_Axes,Image,'EdgeColor','none');
title("Original Image Plot");
xlabel('X-Axis'); ylabel('Y-Label');
zlim([0 255]);

subplot(1,2); surf(X_Axes,uint8(Calibrated_Image),'none');
title("Calibrated Image Plot");
xlabel('X-Axis'); ylabel('Y-Label');
zlim([0 255]);

关键离散余弦变换(DCT)过滤代码行

%Removing image offset%    
Discrete_Cosine_Transformed_Image = dct2(Image);
Discrete_Cosine_Transformed_Image(1,1) = 0;
Inverse_Discrete_Cosine_Transformed_Image = idct2(Discrete_Cosine_Transformed_Image)

方法2:标准均匀偏移(无倾斜调节)

使用一个常量值,然后在整个图像矩阵中减去该值。

测试图像1:使用最低强度计算偏移量

Offset Removal Image 1

测试图像2:使用平均值/均值来计算偏移量

Offset Removal Image 2

Image = imread("Circular_Image.png");

%Converting image to greyscale if RGB image%
[Image_Height,Depth] = size(Image);
if(Depth == 3)
Image = rgb2gray(Image);
end

   %Removing image offset%
Lowest_Intensity_Value = min(Image,[],'all');
Average = mean(Image,'all');
Calibrated_Image = Image - Average;

% Plotting the original and thresholded image%
X_Axes = (1:1:Image_Height);
Y_Axes = (1:1:Image_Width);

subplot(1,Calibrated_Image,'none');
title("Calibrated Image Plot");
xlabel('X-Axis'); ylabel('Y-Label');
zlim([0 255]);

使用MATLAB版本:R2019b

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。