当前位置: 首页 > news >正文

数字图像处理:实验五

         uu们!大家好,欢迎来到数字图像处理第五章节内容的学习,在本章中有关空间滤波的理论学习是十分重要的,所以建议大家要去用心的学习本章,在之后的传感器的相关图像采集时,不可避免的会有噪声等的影响,所以,滤波等操作是解决其中的方法,接下来,我们将开始学习。

一、实验

实验目的:通过实验掌握空间滤波的基本概念和方法

实验内容:

1、掌握平滑线性滤波的概念和方法

      1)均值滤波

           

      2)加权均值滤波

              

二、掌握统计排序滤波的概念和方法

1、中值滤波: 模板的作用只是完成“取出邻域中的像素”,然后从小到大排序, 取中间的第(mn+1)/2个像素的灰度值为输出灰度值。

                                        

2、最大值滤波和最小值滤波: 模板的作用只是完成“取出邻域中的像素”,然后从小到大排序, 取其中的第mn个像素的灰度值(最大值),或第1个像素的灰度 值(最小值)为输出灰度值。

如图例所示:

三、具体要求

1、基本编程

        1)用均值滤波和加权均值滤波2种方法对选图(自己选与图1有 相似分布的图,不能用图1)进行滤波,选用的模板大小自选3个;

       2)用均值滤波、加权均值滤波、中值滤波、最大值滤波和最小值滤 波5种方法对选图(自己选与图2类似有噪声污染的图,不能用图 2)进行滤波,选用的模板大小自选3个;

       3)得到的5种滤波方法,每种滤波方法对应3个不同大小的模板, 因此每种方法滤波获得3张滤波图以及1张原图,共4张子图显示 在一个窗口里,每个子图的抬头标注相应名称,如“均值滤波(3*3)”。

        4)“编程及结果”中的编程内容必须包含2种编写方式 :     a)底层编写    b)函数调用

2、 实际应用

       请对一幅自选的模糊图像(Blurredimage)进行滤波处理,达到除 去模糊,增强细节和对比度的目的。

四、代码

函数调用版:

% 读取图像
A=imread('1.png') % 读取名为'1.png'的图像到变量A中
B=imread('1.png') % 再次读取相同的图像到变量B中,这里可能是为了后续不同的处理% 定义不同大小的均值滤波器
p1 = fspecial('average', [3 3]); % 创建一个3x3的均值滤波器
p2 = fspecial('average', [5 5]); % 创建一个5x5的均值滤波器
p3 = fspecial('average', [7 7]); % 创建一个7x7的均值滤波器% 应用不同大小的均值滤波器
L1 = imfilter(A, p1); % 将3x3均值滤波器应用于图像A
L2 = imfilter(A, p2); % 将5x5均值滤波器应用于图像A
L3 = imfilter(A, p3); % 将7x7均值滤波器应用于图像A% 显示原始图像和滤波后的图像

                  

figure; % 创建一个新的图形窗口
subplot(2, 3, 2); % 创建一个2行3列的子图布局,并定位到第2个子图位置
imshow(A); % 显示图像A
title('原图像'); % 设置子图的标题为“原图像”
subplot(2, 3, 4);imshow(L1); % 显示3x3均值滤波后的图像L1
title('3x3 均值滤波'); % 设置子图的标题为“3x3 均值滤波”
subplot(2, 3, 5);imshow(L2); % 显示5x5均值滤波后的图像L2
title('5x5 均值滤波'); % 设置子图的标题为“5x5 均值滤波”
subplot(2, 3, 6);imshow(L3); % 显示7x7均值滤波后的图像L3
title('7x7 均值滤波'); % 设置子图的标题为“7x7 均值滤波”% 定义加权均值滤波器的模板
h_1 = [0.1 0.2 0.1; 0.2 0.4 0.2;0.1 0.2 0.1]; % 3x3加权均值滤波器模板
h_2 = [1/25 1/25 1/35 1/25 1/25; % 5x5加权均值滤波器模板1/25 1/15 1/10 1/15 1/25;1/35 1/10 1/5  1/10 1/35;1/25 1/15 1/10 1/15 1/25;1/25 1/25 1/35 1/25 1/25];
h_3 = [1/49 1/49 1/60 1/70 1/60 1/49 1/49; % 7x7加权均值滤波器模板1/49 1/40 1/35 1/30 1/35 1/40 1/49;1/60 1/35 1/25 1/15 1/25 1/35 1/60;1/70 1/25 1/15 1/5  1/15 1/25 1/70;1/60 1/35 1/25 1/15 1/25 1/35 1/60;1/49 1/40 1/35 1/30 1/35 1/40 1/49;1/49 1/49 1/60 1/70 1/60 1/49 1/49];% 使用'same'选项保持输出图像大小与输入相同
A_1 = imfilter(A, h_1, 'same'); % 应用3x3加权均值滤波器并保持图像大小不变
A_2 = imfilter(A, h_2, 'same'); % 应用5x5加权均值滤波器并保持图像大小不变
A_3 = imfilter(A, h_3, 'same'); % 应用7x7加权均值滤波器并保持图像大小不变% 显示原始图像和滤波后的图像

                    

figure; % 创建一个新的图形窗口
subplot(2, 3, 2);imshow(A); % 显示原始图像A
title('原图像'); % 设置子图的标题为“原图像”
subplot(2, 3, 4);imshow(A_1); % 显示3x3加权均值滤波后的图像A_1
title('3*3 加权均值滤波'); % 设置子图的标题为“3*3 加权均值滤波”
subplot(2, 3, 5);imshow(A_2); % 显示5x5加权均值滤波后的图像A_2
title('5*5 加权均值滤波'); % 设置子图的标题为“5*5 加权均值滤波”
subplot(2, 3, 6);imshow(A_3); % 显示7x7加权均值滤波后的图像A_3
title('7*7 加权均值滤波'); % 设置子图的标题为“7*7 加权均值滤波”% 应用不同大小的均值滤波器到图像B
B_1 = imfilter(B, p1); % 将3x3均值滤波器应用于图像B
B_2 = imfilter(B, p2); % 将5x5均值滤波器应用于图像B
B_3 = imfilter(B, p3); % 将7x7均值滤波器应用于图像B% 显示原始图像和滤波后的图像

                 

figure; % 创建一个新的图形窗口
subplot(2, 3, 2); % 创建一个2行3列的子图布局,并定位到第2个子图位置
imshow(B); % 显示图像B
title('原图像'); % 设置子图的标题为“原图像”
subplot(2, 3, 4);imshow(B_1); % 显示3x3均值滤波后的图像B_1
title('3x3 均值滤波'); % 设置子图的标题为“3x3 均值滤波”
subplot(2, 3, 5);imshow(B_2); % 显示5x5均值滤波后的图像B_2
title('5x5 均值滤波'); % 设置子图的标题为“5x5 均值滤波”
subplot(2, 3, 6);imshow(B_3); % 显示7x7均值滤波后的图像B_3
title('7x7 均值滤波'); % 设置子图的标题为“7x7 均值滤波”% 使用'same'选项保持输出图像大小与输入相同
B1 = imfilter(B, h_1, 'same'); % 应用3x3加权均值滤波器并保持图像大小不变
B2 = imfilter(B, h_2, 'same'); % 应用5x5加权均值滤波器并保持图像大小不变
B3 = imfilter(B, h_3, 'same'); % 应用7x7加权均值滤波器并保持图像大小不变% 显示原始图像和滤波后的图像

                

figure; % 创建一个新的图形窗口
subplot(2, 3, 2);imshow(B); % 显示原始图像B
title('原图像'); % 设置子图的标题为“原图像”
subplot(2, 3, 4);imshow(B1); % 显示3x3加权均值滤波后的图像B1
title('3*3 加权均值滤波'); % 设置子图的标题为“3*3 加权均值滤波”
subplot(2, 3, 5);imshow(B2); % 显示5x5加权均值滤波后的图像B2
title('5*5 加权均值滤波'); % 设置子图的标题为“5*5 加权均值滤波”
subplot(2, 3, 6);imshow(B3); % 显示7x7加权均值滤波后的图像B3
title('7*7 加权均值滤波'); % 设置子图的标题为“7*7 加权均值滤波"% 调用自定义的均值滤波函数对图像B进行滤波
S_1 = avg_filter(B,3); % 对图像B应用3x3均值滤波
S_2 = avg_filter(B,7); % 对图像B应用7x7均值滤波
S_3 = avg_filter(B,11); % 对图像B应用11x11均值滤波
S_4 = javg_filter(B,3); % 对图像B应用3x3加权均值滤波
S_5 = kavg_filter(B,5); % 对图像B应用5x5加权均值滤波
S_6 = lavg_filter(B,7); % 对图像B应用7x7加权均值滤波
S_7 = mid_filter(B,3); % 对图像B应用3x3中值滤波
S_8 = mid_filter(B,5); % 对图像B应用5x5中值滤波
S_9 = mid_filter(B,7); % 对图像B应用7x7中值滤波% 获取图像B的尺寸
[M,N] = size(B);% 最大值滤波
for i = 2:M-1for j=2:N-1t = B(i-1:i+1,j-1:j+1); % 提取以(i,j)为中心的3x3邻域F1(i,j)  =max(t(:)); % 将邻域内的最大值赋给F1的对应位置end
end
for i = 3:M-2for j=3:N-2t = B(i-2:i+2,j-2:j+2);% 提取以(i,j)为中心的5x5邻域F2(i,j)  =max(t(:));% 将邻域内的最大值赋给F2的对应位置end
end
for i = 4:M-3for j=4:N-3t = B(i-3:i+3,j-3:j+3); % 提取以(i,j)为中心的7x7邻域F3(i,j)  =max(t(:));% 将邻域内的最大值赋给F3的对应位置end
end
%最小值滤波
for i = 2:M-1for j=2:N-1t = B(i-1:i+1,j-1:j+1);% 提取以(i,j)为中心的3x3邻域F4(i,j)  =min(t(:));% 将邻域内的最小值赋给F4的对应位置end
end
for i = 3:M-2for j=3:N-2t = B(i-2:i+2,j-2:j+2);% 提取以(i,j)为中心的5x5邻域F5(i,j)  =min(t(:));% 将邻域内的最小值赋给F5的对应位置end
end
for i = 4:M-3for j=4:N-3t = B(i-3:i+3,j-3:j+3);% 提取以(i,j)为中心的7x7邻域F6(i,j)  =min(t(:));% 将邻域内的最小值赋给F6的对应位置end
end
Figure

subplot(2,3,2),imshow(B)
title('原图')
subplot(2,3,4),imshow(S_1)
title('均值滤波3*3')
subplot(2,3,5),imshow(S_2)
title('均值滤波7*7')
subplot(2,3,6),imshow(S_3)
title('均值滤波11*11')
Figure

subplot(2,3,2),imshow(B)
title('原图')
subplot(2,3,4),imshow(S_4)
title('加权均值滤波3*3')
subplot(2,3,5),imshow(S_5)
title('加权均值滤波5*5')
subplot(2,3,6),imshow(S_6)
title('加权均值滤波7*7')
Figure

subplot(2,3,2),imshow(B)
title('原图')
subplot(2,3,4),imshow(S_7)
title('中值滤波3*3')
subplot(2,3,5),imshow(S_8)
title('中值滤波5*5')
subplot(2,3,6),imshow(S_9)
title('中值滤波7*7')
Figure

subplot(2,3,2),imshow(B)
title('原图')
subplot(2,3,4),imshow(F1)
title('最大值滤波3*3')
subplot(2,3,5),imshow(F2)
title('最大值滤波5*5')
subplot(2,3,6),imshow(F3)
title('最大值滤波7*7')
Figure

subplot(2,3,2),imshow(B)
title('原图')
subplot(2,3,4),imshow(F4)
title('最小值滤波3*3')
subplot(2,3,5),imshow(F5)
title('最小值滤波5*5')
subplot(2,3,6),imshow(F6)
title('最小值滤波7*7')

底层编写版:

function W = avg_filter(x,n)     
a(1:n,1:n)=1;   % 创建一个n×n的模板,所有元素都是1  
[hight, width]=size(x);   % 获取输入图像的高和宽,变量名应为height和width,这里可能是笔误  
x1=double(x);  
x2=x1;  
for i=1:hight-n+1  for j=1:width-n+1  c=x1(i:i+(n-1),j:j+(n-1)).*a; % 提取x1中从(i,j)开始的n×n区域,并与模板相乘  s=sum(sum(c));                 % 计算c矩阵中所有元素的和  x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); % 将计算得到的均值赋给模板中心位置的元素  end  
end  
% 未被赋值的元素(边缘部分)取原值  
W=uint8(x2); % 将滤波后的图像转换回原始的数据类型并返回
end
function d=javg_filter(x,n)     
a=[1,2,1;2,4,2;1,2,1];   %a即n×n模板,元素全是1  
[hight, width]=size(x);   %输入图像是hightxwidth的,且hight>n,width>n  
x1=double(x);  
x2=x1;  
for i=1:hight-n+1  for j=1:width-n+1  c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘  s=sum(sum(c));                 %求c矩阵中各元素之和  x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将与模板运算后的各元素的均值赋给模板中心位置的元素  end  
end  
%未被赋值的元素取原值  d=uint8(x2);
end
function d=kavg_filter(x,n)     
a=[1,2,4,2,1;2,4,8,4,2;4,8,16,8,4;2,4,8,4,2;1,2,4,2,1];   %a即n×n模板,元素全是1  
[hight, width]=size(x);   %输入图像是hightxwidth的,且hight>n,width>n  
x1=double(x);  
x2=x1;  
for i=1:hight-n+1  for j=1:width-n+1  c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘  s=sum(sum(c));                 %求c矩阵中各元素之和  x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将与模板运算后的各元素的均值赋给模板中心位置的元素  end  
end  
%未被赋值的元素取原值  d=uint8(x2);
end
function d=lavg_filter(x,n)     
a=[1,2,4,8,4,2,1; 2,4,8,16,8,4,2; 4,8,16,32,16,8,4; 8,16,32,64,32,16,8; 4,8,16,32,16,8,4; 2,4,8,16,8,4,2; 1,2,4,8,4,2,1];   %a即n×n模板,元素全是1  
[hight, width]=size(x);   %输入图像是hightxwidth的,且hight>n,width>n  
x1=double(x);  
x2=x1;  
for i=1:hight-n+1  for j=1:width-n+1  c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘  s=sum(sum(c));                 %求c矩阵中各元素之和  x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将与模板运算后的各元素的均值赋给模板中心位置的元素  end  
end  
%未被赋值的元素取原值  d=uint8(x2);
end
function d=mid_filter(x,n)     
[height, width]=size(x);   %输入图像是p×q的,且p>n,q>n  
x1=double(x);  
x2=x1;  
for i=1:height-n+1  for j=1:height-n+1  c=x1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板(n×n的)  e=c(1,:);      %是c矩阵的第一行  for u=2:n  e=[e,c(u,:)];     %将c矩阵变为一个行矩阵      end  mm=median(e);      %mm是中值  x2(i+(n-1)/2,j+(n-1)/2)=mm;   %将模板各元素的中值赋给模板中心位置的元素  end  
end   
%未被赋值的元素取原值  
d=uint8(x2);
end调用历程:
% 读取图像
A = imread('1.png');  % 读取名为'1.png'的图像% 应用均值滤波器
S_avg_3 = avg_filter(A, 3);  % 3x3 均值滤波
S_avg_5 = avg_filter(A, 5);  % 5x5 均值滤波
S_avg_7 = avg_filter(A, 7);  % 7x7 均值滤波% 应用加权均值滤波器
S_wavg_3 = javg_filter(A, 3);  % 3x3 加权均值滤波
S_wavg_5 = kavg_filter(A, 5);  % 5x5 加权均值滤波
S_wavg_7 = lavg_filter(A, 7);  % 7x7 加权均值滤波% 应用中值滤波器
S_mid_3 = mid_filter(A, 3);  % 3x3 中值滤波
S_mid_5 = mid_filter(A, 5);  % 5x5 中值滤波
S_mid_7 = mid_filter(A, 7);  % 7x7 中值滤波% 显示原始图像和滤波后的图像
figure;  % 创建一个新的图形窗口
subplot(3, 3, 1); imshow(A); title('原图');% 显示均值滤波结果
subplot(3, 3, 2); imshow(S_avg_3); title('均值滤波 3x3');
subplot(3, 3, 3); imshow(S_avg_5); title('均值滤波 5x5');
subplot(3, 3, 4); imshow(S_avg_7); title('均值滤波 7x7');% 显示加权均值滤波结果
subplot(3, 3, 5); imshow(S_wavg_3); title('加权均值滤波 3x3');
subplot(3, 3, 6); imshow(S_wavg_5); title('加权均值滤波 5x5');
subplot(3, 3, 7); imshow(S_wavg_7); title('加权均值滤波 7x7');% 显示中值滤波结果
subplot(3, 3, 8); imshow(S_mid_3); title('中值滤波 3x3');
subplot(3, 3, 9); imshow(S_mid_5); title('中值滤波 5x5');
function W = avg_filter(x, n)% 创建一个n×n的模板,所有元素都是1a = ones(n) * ones(n, 1); % 正确的创建n×n模板的方式[h, w] = size(x); % 获取输入图像的高和宽x1 = double(x); % 将图像转换为双精度浮点数x2 = x1; % 创建一个与原图像同样大小的副本for i = 1:(h - n + 1)for j = 1:(w - n + 1)% 提取x1中从(i,j)开始的n×n区域,并与模板相乘c = x1(i:i+n-1, j:j+n-1) .* a; s = sum(c(:)); % 计算c矩阵中所有元素的和% 将计算得到的均值赋给模板中心位置的元素x2(i+(n-1)/2, j+(n-1)/2) = s / (n * n); endendW = uint8(x2); % 将滤波后的图像转换回原始的数据类型
end
% 加权均值滤波函数(3x3)
function d = javg_filter(x, n)a = [1, 2, 1; 2, 4, 2; 1, 2, 1]; % 创建一个3x3的加权模板[h, w] = size(x); % 获取输入图像的高和宽d = double(x); % 将图像转换为双精度浮点数for i = 1:h-n+1for j = 1:w-n+1c = d(i:i+n-1, j:j+n-1) .* a; % 提取d中从(i,j)开始的n×n区域,并与模板相乘s = sum(sum(c)); % 计算c矩阵中所有元素的和d(i+(n-1)/2, j+(n-1)/2) = s / (n*n); % 将计算得到的加权均值赋给模板中心位置的元素endendd = uint8(d); % 将滤波后的图像转换回原始的数据类型
end% 加权均值滤波函数(5x5)
function d = kavg_filter(x, n)a = [1, 2, 4, 2, 1; 2, 4, 8, 4, 2; 4, 8, 16, 8, 4; 2, 4, 8, 4, 2; 1, 2, 4, 2, 1]; % 创建一个5x5的加权模板[h, w] = size(x); % 获取输入图像的高和宽d = double(x); % 将图像转换为双精度浮点数for i = 1:h-n+1for j = 1:w-n+1c = d(i:i+n-1, j:j+n-1) .* a; % 提取d中从(i,j)开始的n×n区域,并与模板相乘s = sum(sum(c)); % 计算c矩阵中所有元素的和d(i+(n-1)/2, j+(n-1)/2) = s / (n*n); % 将计算得到的加权均值赋给模板中心位置的元素endendd = uint8(d); % 将滤波后的图像转换回原始的数据类型
end% 加权均值滤波函数(7x7)
function d = lavg_filter(x, n)a = [1, 2, 4, 8, 4, 2, 1; 2, 4, 8, 16, 8, 4, 2; 4, 8, 16, 32, 16, 8, 4; 8, 16, 32, 64, 32, 16, 8; 4, 8, 16, 32, 16, 8, 4; 2, 4, 8, 16, 8, 4, 2; 1, 2, 4, 8, 4, 2, 1]; % 创建一个7x7的加权模板[h, w] = size(x); % 获取输入图像的高和宽d = double(x); % 将图像转换为双精度浮点数for i = 1:h-n+1for j = 1:w-n+1c = d(i:i+n-1, j:j+n-1) .* a; % 提取d中从(i,j)开始的n×n区域,并与模板相乘s = sum(sum(c)); % 计算c矩阵中所有元素的和d(i+(n-1)/2, j+(n-1)/2) = s / (n*n); % 将计算得到的加权均值赋给模板中心位置的元素endendd = uint8(d); % 将滤波后的图像转换回原始的数据类型
end% 中值滤波函数
function d = mid_filter(x, n)[h, w] = size(x); % 获取输入图像的高和宽d = double(x); % 将图像转换为双精度浮点数for i = 1:h-n+1for j = 1:w-n+1c = d(i:i+n-1, j:j+n-1); % 提取d中从(i,j)开始的n×n区域e = reshape(c, [], 1); % 将c矩阵变为一个列向量mm = median(e); % 计算列向量的中值d(i+(n-1)/2, j+(n-1)/2) = mm; % 将中值赋给模板中心位置的元素endendd = uint8(d); % 将滤波后的图像转换回原始的数据类型
end

结果如下图所示:
                        

五、结语和总结

       uu们!我们的实验内容到这里就基本上结束对于第五章内容的学习了,但是正如文章开头所述,理论学习更加重要,所以有关于滤波知识的学习我们一定要巩固和理解,数字图像处理实际上是我们对于美的追求的一种体现,所以,让我们每天学习和进步,加油,uu们!

      (后续我会开展所有系列的理论课程的讲述,因为没有那么多时间看书,所以咸鱼哥会让知识点和细节都更加便于理解和学习的方法,所以请耐心一下,咸鱼哥觉得学习知识是一个共享的过程,而分享是种快乐,所以加油哦!)

                                                                                          ヽ( ̄ω ̄( ̄ω ̄〃)ゝ咸鱼哥寄语

相关文章:

数字图像处理:实验五

uu们!大家好,欢迎来到数字图像处理第五章节内容的学习,在本章中有关空间滤波的理论学习是十分重要的,所以建议大家要去用心的学习本章,在之后的传感器的相关图像采集时,不可避免的会有噪声等的影响&#xf…...

2024我在csdn走过的路

自我介绍 ✏️博客名✏️: zy_destiny 🌸粉丝数🌸: 1万 🌿擅长领域🌿: 人工智能 👀欢迎访问👀: 我的主页 我的2024 回顾下2024年,起点要从去年写…...

网络安全等级保护基本要求——等保二级

《信息安全技术网络安全等级保护基本要求》GB/T22239-2019 7.1 安全通用要求 7.1.1 安全物理环境 7.1.1.1 物理位置选择 本项要求包括: a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内;b) 机房场地应避免设在建筑物的顶层或地下室,否则应加…...

了解 .mgJSON 文件

.mgJSON (Motion Graphics JSON)是一个基于标准 JSON 格式的文件扩展名,专门用于存储和交换与动态图形、动画和多媒体应用相关的数据。该格式支持静态和动态数据流,能够精确描述动画、物体变换、图形效果等。 .mgJSON 文件通过层级…...

django使用踩坑经历

DRF 使用drf获取序列化后的id visitor_serializer VisitorSaveSerializer(data{…}) if visitor_serializer.is_valid():visitor visitor_serializer.save() visitor_id visitor.pkpostgrepsql踩坑 django使用postgrepsql,使用聚合函数如:sum 等,被…...

【数据分享】1929-2024年全球站点的逐年最低气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…...

Leetcode:2239

1,题目 2,思路 循环遍历满足条件就记录,最后返回结果值 3,代码 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…...

【FPGA】MIPS 12条整数指令【1】

目录 修改后的仿真结果 修改后的完整代码 实现bgtz、bltz、jalr 仿真结果(有问题) bltz------并未跳转,jCe? 原因是该条跳转语句判断的寄存器r7,在该时刻并未被赋值 代码(InstMem修改前) i…...

Halcon 3D基础知识及常用函数

一、基本概念 1、点云(Point Cloud) 点云是一组3D数据点,每个点由笛卡尔坐标系或其他坐标系中的一个三维坐标表示,它被认为是一组非结构化的三维点,象征着三维物体的几何形状。点云是一种简单、完整的数据结构&#…...

贵金属铟,钌,铱,钯铂铑回收工艺详解

Tulsimer CH-95S 是一款为了从工业废水中去除回收汞和贵金属而专门开发的螯合树脂。 Tulsimer CH-95S 是一款拥有聚乙烯异硫脲官能基的大孔树脂,这种树脂对汞有极高的选择性。它也选 择其他的贵金属,如黄金,铂金和其他铂金族金属。…...

AutoSAR CP RTE 规范核心内容简介以及BswScheduler工作原理解析

一、Autosar CP RTE规范核心内容简介 本规范详细介绍了AUTOSAR运行时环境(RTE)和基本软件调度器(BswScheduler)的软件规范。 研究背景 背景介绍: 这篇文章的研究背景是AUTOSAR(Automotive Open System Architecture…...

Python Pyside6 加Sqlite3 写一个 通用 进销存 系统 初型

图: 说明: 进销存管理系统说明文档 功能模块 1. 首页 显示关键业务数据商品总数供应商总数本月采购金额本月销售金额显示预警信息库存不足预警待付款采购单待收款销售单2. 商品管理 商品信息维护商品编码(唯一标识)商品名称规格型号单位分类进货价销售价库存数量预警…...

office 学习

Excel 视图 切片 通过视图进行数据分析 条形格式 函数 countif sumif sumifs 多条件 countifs 多条件...

【三维分割】Gaga:通过3D感知的 Memory Bank 分组任意高斯

文章目录 摘要一、引言二、主要方法2.1 3D-aware Memory Bank2.2 三维分割的渲染与下游应用 三、实验消融实验应用: Scene Manipulation 地址:https://www.gaga.gallery 标题:Gaga: Group Any Gaussians via 3D-aware Memory Bank 来源:加利福…...

期权懂|明日股指期货交割日该如何操作?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 明日股指期货交割日该如何操作? 一、需要确认股指期货交割日: 查查看明日是否为交割日,别忘了关注交易所公告,以免错过。 二、需要…...

大牙的2024年创作总结

文章目录 一、自动驾驶通讯协议的学习心得二、PyTorch框架应用的心得体会三、大规模语言模型(LLM)的研究心得四、神经网络架构与实战经验五、我的年度文章六、未来展望与个人成长 引言 2024年是我个人在深度学习和自动驾驶领域不断探索、实践并取得显著…...

AI软件栈:中间表示

概念 编译器通常可以分为前端、优化器和后端三个部分中间表示属于变异过程中表达源程序的方法,作为单独的表示语言。将不同的前端语言(例如C、python、Java等)描述转换为中间表示。优化器对中间表示进行转换和优化,输出新的中间表示。后端将优化后的中间表示转换为特定硬件…...

【PowerQuery专栏】PowerQuery的M语言函数Access数据库访问

Access是相对比较小型的文件型数据库,PowerQuery 进行Access数据库解析非常简单,直接使用Access.Database的函数可以实现数据库访问,函数包含如下参数,函数结果为Table表类型。 Access.Database(参数1 as binary,参数2 as record) as Table 参数1为数据库,数据类型为二进…...

C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况

目录 说明 效果 模型 项目 代码 下载 参考 C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况 说明 地址:https://github.com/RapidAI/RapidUnDistort 修正文档扭曲/模糊/阴影等情况,使用onnx模型简单轻量部署&#xff0c…...

go读取excel游戏配置

1.背景 游戏服务器,配置数据一般采用csv/excel来作为载体,这种方式,策划同学配置方便,服务器解析也方便。在jforgame框架里,我们使用以下的excel配置格式。 然后可以非常方便的进行数据检索,例如&#xff…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

【AI学习】三、AI算法中的向量

在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...