2017年国赛高教杯数学建模A题CT系统参数标定及成像解题全过程文档及程序

news2024/9/20 12:48:47

2017年国赛高教杯数学建模

A题 CT系统参数标定及成像

  CT(Computed Tomography)可以在不破坏样品的情况下,利用样品对射线能量的吸收特性对生物组织和工程材料的样品进行断层成像,由此获取样品内部的结构信息。一种典型的二维CT系统如图1所示,平行入射的X射线垂直于探测器平面,每个探测器单元看成一个接收点,且等距排列。X射线的发射器和探测器相对位置固定不变,整个发射-接收系统绕某固定的旋转中心逆时针旋转180次。对每一个X射线方向,在具有512个等距单元的探测器上测量经位置固定不动的二维待检测介质吸收衰减后的射线能量,并经过增益等处理后得到180组接收信息。
  CT系统安装时往往存在误差,从而影响成像质量,因此需要对安装好的CT系统进行参数标定,即借助于已知结构的样品(称为模板)标定CT系统的参数,并据此对未知结构的样品进行成像。
  请建立相应的数学模型和算法,解决以下问题:
  (1) 在正方形托盘上放置两个均匀固体介质组成的标定模板,模板的几何信息如图2所示,相应的数据文件见附件1,其中每一点的数值反映了该点的吸收强度,这里称为“吸收率”。对应于该模板的接收信息见附件2。请根据这一模板及其接收信息,确定CT系统旋转中心在正方形托盘中的位置、探测器单元之间的距离以及该CT系统使用的X射线的180个方向。
  (2) 附件3是利用上述CT系统得到的某未知介质的接收信息。利用(1)中得到的标定参数,确定该未知介质在正方形托盘中的位置、几何形状和吸收率等信息。另外,请具体给出图3所给的10个位置处的吸收率,相应的数据文件见附件4。
  (3) 附件5是利用上述CT系统得到的另一个未知介质的接收信息。利用(1)中得到的标定参数,给出该未知介质的相关信息。另外,请具体给出图3所给的10个位置处的吸收率。
  (4) 分析(1)中参数标定的精度和稳定性。在此基础上自行设计新模板、建立对应的标定模型,以改进标定精度和稳定性,并说明理由。
  (1)-(4)中的所有数值结果均保留4位小数。同时提供(2)和(3)重建得到的介质吸收率的数据文件(大小为256×256,格式同附件1,文件名分别为problem2.xls和problem3.xls)
在这里插入图片描述

整体求解过程概述(摘要)

  本文针对CT系统参数标定及成像问题,建立了基于最小二乘法的CT系统标定模型,求解了CT系统的旋转中心坐标、探测器单元间距以及X射线的180个方向;建立了基于傅立叶变换的图像重建模型,求解了未知介质的吸收率分布;建立了基于滤波反投影法的图像重建模型,求解了噪声较大的未知介质的吸收率分布;设计了新型标定模板并建立了对应的标定模型,解决了改进标定精度和稳定性的问题。
  针对问题一,建立了基于最小二乘法的CT系统标定模型,求解了CT系统的标定参数。首先,通过最小二乘法,将180组接收信息拟合成正弦函数,根据几何关系联立方程组求解出180个旋转角度,以及探测器单元间距𝑑=0.2758。其次,通过最小二乘优化、变步长遍历搜索的方法,求得旋转中心为(-9.2513,5.6783)。最后,基于所得标定参数及已知模板的吸收率分布,求解标定模板的接收信息,进行残差分析,检验了标定模型的合理性。
  针对问题二,建立了基于傅立叶变换的图像重建模型,求解了未知介质的吸收率分布。首先,依据 Radon 变换及中心切片定理,对投影数据进行一维傅立叶变换,得到定义在傅立叶空间的极坐标网格。其次,在频域上对投影进行积分,再次,直接通过二维傅立叶反变换得到重建图像,其中10处吸收率分别为0.0000、0.0000、1.0060、0.0000、1.0081、0.0081、0.0000、0.1008、0.0081、0.0081。最后,对标定参数进行了灵敏度分析。
  针对问题三,建立了基于滤波反投影法的图像重建模型,求解了噪声较大的未知介质的吸收率分布。首先,采用问题二的方法,发现重建图像噪声较大,改用滤波反投影算法去除重建图像的伪影。再次,选择中值滤波器进行滤波卷积,采用线性内插的方法进行插值,反投影累加后得到重建图像,其中 10处吸收率分别为 2.0323、1.2863、2.0081、1.6370、2.0484、2.0081、0.0000、2.0343、1.5363、0.0403。最后,对标定参数进行了灵敏度分析。
  针对问题四,设计了新型标定模板并建立了对应的标定模型,解决了改进标定精度和稳定性的问题。首先,对原有模板进行误差分析,得出对椭圆边缘处接收信息的插值拟合会导致旋转角度出现误差的结论。其次,为避免类似误差,设计圆形组合模板,并建立对应标定模型。再次,对比基于新旧模板的不同标定参数的图像重建模型,求得新旧模板的峰值信噪比分别为50.3614、52.2537。最后,求解基于不同旋转角度个数的归一化均方距离,新模板重建图像精度趋于稳定的旋转次数小于旧模板,进而验证了基于新模板的标定模型精度更高,更稳定。

模型假设:

  1. 假设射线源中点与转台旋转中心连线垂直于探测器阵列;
  2. 假设射线源的衰减仅与被介质吸收有关,并未产生散射;
  3. 假设增益处理是线性增大的。

问题分析:

  问题整体思路较为清晰,层层递进。问题一是根据已知标定模板的吸收率及其接收信息对CT系统进行正向标定的问题。问题二、三建立在问题一求解的标定系数基础之上,是依据不同的接受信息对未知介质的吸收率分布进行反向重建的问题。分析问题二、三的接受信息可发现问题三图像噪声偏大,故对问题三的求解大致思路与问题二类似,但需进行进一步的降噪处理。问题四需对原有标定模型进行精度和稳定性分析,并设计新的模板及标定模型,进而提高精度及稳定性,属于优化问题。
  问题一的分析
  首先,分析题目条件可知,均匀模板的吸收率分布及对应的接受信息已知,且模板质地均匀,故射线衰减公式中的对吸收率分布进行的线积分可简单变为介质厚度,故可对接收信息的表达式进行求解。 其次,要将离散的接受信息连续化,可考虑通过最小二乘法对其进行拟合, 初步分析为两个近似正弦曲线,分别对应图中的椭圆和圆,其中正弦曲线与X轴相交的情况反应了平行光束与椭圆相切的两条切线距离的大小。由于两切线之间的距离与旋转中心[1]、旋转角度存在一定的几何关系,列出关系式,联立方程可解出各个旋转角度的值。 再次,基于上述拟合曲线及几何关系式,可求得多个探测器单元间距及旋转中心的坐标。针对探测器单元间距的求解,出于对使用信息完整性的考虑,可通过多次求解方程组,并对多个解取平均得到最终答案。针对旋转中心的求解,由于探测器中垂线衡过旋转中心,且旋转角度已求解得到,故可列出不同角度下中垂线的直线方程,两两联立即可求出旋转中心。出于保留信息完整性,同时避免算法过于复杂的考虑,故均匀抽取30组直线,得到元素个数为345的点集。可通过最小二乘优化[2],建立各点到中心点距离平方和最小的目标函数,可通过变步长遍历搜索的方法,求解旋转中心。 最后,由于接受信息的表达式可被求解,且介质吸收率分布已知,故可对已知模板的接受信息进行模拟,可与题中所给条件进行比对,进行残差分析,即可检验模型的合理性。
  问题二的分析
  首先,分析题目条件可知,由于在第一问已对CT系统进行了标定,故可根据题中所给的接收信息,对图像进行重建。对图像重建的常用方法有傅里叶变换法、滤波反投影法,由于部分接收信息的拟合后的图像较为平滑,故采用算法较为简单的傅里叶变换法。 其次,在推导非均匀介质中衰减公式时,可对非均匀物体进行微元化考虑,进而对射线贯穿部分的吸收率分布进行线积分。可根据Radon变换[3]及中心切片定理[4],得到多个角度下的投影后,通过投影反变换可求出被积函数即线衰减系数函数,从而得到对应的线衰减系数分布的图像,重建出问题二中非均匀物体的形状及在正方形托盘上的位置。 再次,为得到题中所要求的10个点的吸收率,需要得到吸收率与图像灰度值之间的关系。由于问题一中模板条件已知,运用问题二中的算法可重建出问题一中的模板图像,得到已知模板图像与重建模板图像之间的灰度值关系后再据此关系得问题三图像的10个吸收率。 最后,可针对三个不同标定参数,进行固定比率的修改,并计算参数修改后重建图像吸收率分布的变化率,可据此对各标定参数进行灵敏度分析。
  问题三的分析
  首先,问题三与问题二提供的条件并无二致,然而通过观察附件中的接收信息值,可发现数据在表格中的分布更加复杂,很可能导致运用问题二中的傅立叶变换算法重建出的图像质量不佳,故在问题三考虑采用更优的算法重建图像。通过查阅文献可知,滤波反投影算法[5]可大大消除反投影重建算法的模糊现象,保证重建图像的边缘清晰和内部分布均匀,得到质量较好的重建图像。故可改用滤波反投影算法进行图像重建。 其次,滤波反投影算法的关键在于滤波函数的选取,在众多滤波函数中,中值滤波[6]对噪声的除噪作用较显著,能够较好地保护图像边缘,降低噪声。根据反投影算法,得到滤波后的投影数据便可对图像进行重建,但平行束投影的采集过程中,射线发射器和接收器是离散的,与此同时角度采样也是离散化的,故需要选用合适的插值方法对滤波后的投影数据进行处理。通过查阅文献可知,常用方法有线性内插和紧邻内插,线性内插更优,故可采用线性内插的方法。由此,可对投影数据进行反变换,进而得重建后的图像及吸收率分布。 最后,可针对三个不同标定参数,进行固定比率的修改,并计算参数修改后重建图像吸收率分布的变化率,可据此对各标定参数进行灵敏度分析。
  问题四的分析
  首先,分析题目可知,应先对原有模板进行误差分析,进而考虑新模板的设计方向。由于问题一中对椭圆边缘处的接收信息进行拟合时存在一定误差,故造成对射线旋转方向的求解产生了误差。为避免这一误差,可考虑设计组合圆模板对上述误差进行规避,通过设计特殊的圆心及半径,避免拟合,进而得到优化后的旋转角度。 其次,要对比基于新旧模板标定模型的优劣,可通过比对基于不同标定参数的图像重建模型的优劣来体现。根据题意,从精度及稳定性[7]两方面来考虑。 针对精度,可建立重建图像评价指标。一般指标有归一化均方距离、归一化平均绝对距离、峰值信噪比,由于三个指标互成正比或反比,故无需对各指标进行赋权,针对基于新旧标定参数的图像重建模型,可通过重建原有模板图形,计算各指标值,比对新模型的经度是否更高。
  针对稳定性,由于重建模型的重建质量是关于旋转角度个数变化而变化的针对这一动态过程,模型的稳定性刻画了重建图像精度随旋转角度个数增加的变化趋势。故可通过均匀减少图像旋转角度个数,求解新旧图像重建模型的归一化均方距离。对上述散点图进行插值拟合,即可得到新旧图像重建模型的图像精度变化趋势,比对新旧模型的稳定点,即可比对新旧模型的稳定性。 最后,依据精度和稳定性两个评价指标,即可判定新模板及其对应标定模型的合理性。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

%最小二乘法拟合正弦曲线MATLAB代码 
function [aa,zd] = q1(xdata,ydata) 
% ydata=xlsread('C:\Users\hp\Desktop\A.xls','a','C1:C29'); 
% ydata=ydata'; 
%估计正弦曲线的初值 
A=max(ydata); 
T=length(ydata);%假设用的是一个周期的正弦波拟合,只是猜测值 
w=2*pi/T; 
c=pi; 
d=mean(ydata); 
options = optimset('MaxFunEvals',1000000); %保证精度 
x_est = lsqcurvefit(@(x,xdata) myfun(x,xdata),[A w c d],xdata,ydata);% 利用
lsqcurvefit 函数拟合 
plot(xdata,myfun(xdata,x_est))%画出拟合图 
aa=2*pi/w;%计算拟合后的周期 
zd=A+d;%计算拟合后的最高点 
%180 个角度计算MATLAB代码 
function [aa] = q1_1(~) 
aa=1; 
data=xlsread('C:\Users\hp\Desktop\A.xls','附件 2');%导入数据 
for i=109:180 
ydata=data(:,i);%初始化处理矩阵 
%以下为初始化参数值 
flag=0; 
s1=0; 
s2=0; 
ydata1=0; 
ydata2=0; 
%以下将图中两个椭圆分开,把分开后的非零值分别放入两个矩阵 
for j=1:512 
if j==1 
if ydata(j,1)~=0 
flag=1; 
end 
else 
if (ydata(j,1)~=0)&&(ydata(j-1,1)==0)&&(flag~=2) 
flag=1; 
end 
if (ydata(j,1)==0)&&(ydata(j-1,1)~=0)
flag=2; 
end 
if (ydata(j,1)~=0)&&(ydata(j-1,1)==0)&&(flag==2) 
flag=3; 
end 
end 
if flag==1 
s1=s1+1; 
ydata1(1,s1)=ydata(j,1); 
end 
if flag==3 
s2=s2+1; 
ydata2(1,s2)=ydata(j,1); 
end 
end 
xdata1=1:length(ydata1); 
xdata2=1:length(ydata2); 
[t1,zd1]=q1(xdata1,ydata1);%拟合其中一个椭圆曲线 
[t2,zd2]=q1(xdata2,ydata2);%拟合另一个椭圆曲线 
d=4*t2/t1;%计算距离 
%以下两个式子为计算直线与椭圆的交点 
y= -((81920*(d - 15)*(d + 15))/11)^(1/2)/(2*d); 
x=(-(1620*(d - 40)*(d + 40))/11)^(1/2)/(2*d); 
k=(x*1600)/(y*225);%计算直线的斜率 
oo=i-108; 
cita(1,oo)=atan(k)*180/pi;%计算出 cita 角 
zd(1,oo)=zd2;%计算出最高点 
end 
xlswrite('C:\Users\hp\Desktop\2.xls',cita);%写入 Excel 文档             
xlswrite('C:\Users\hp\Desktop\zd.xls',zd); 
%拟合正弦函数模型MATLAB代码 
function F = myfun(x,xdata) 
F = x(1)*sin(x(2)*xdata+x(3))+x(4) ; 
%求旋转中心MATLAB代码 
clear 
A=xlsread('C:\Users\hp\Desktop\一.xls');%导入数据 
for i=1:84 
s(1,i)=sin(A(2,i));%初始化 x 前系数 
end 
for i=1:84
c(1,i)=cos(A(2,i));%初始化 y 前系数 
end 
for i=1:84 
n(1,i)=(A(1,i)-256.5)*0.2758;%初始化常系数 
end 
count=1; 
%分别对两个条直线求交点 
for i=1:84 
for j=i:84 
if i~=j 
%           
i)); 
i)); 
end 
[x,y]=solve('s(1,i)*x+c(1,i)*y+n(1,i)=0','s(1,j)*x+c(1,j)*y+n(1,j)=0'); 
z(1,count)=-(c(1, i)*n(1, j) - c(1, j)*n(1, i))/(c(1, i)*s(1, j) - c(1, j)*s(1, 
z(2,count)=-(n(1, i)*s(1, j) - n(1, j)*s(1, i))/(c(1, i)*s(1, j) - c(1, j)*s(1, 
count=count+1; 
end 
end 
%以下为计算求得交点集的边界值 
xmin=min(z(1,:)); 
xmax=max(z(1,:)); 
ymin=min(z(2,:)); 
ymax=max(z(2,:)); 
abc=100000; 
for i=xmin:0.0001:xmax 
for j=ymin:0.0001:ymax 
mm=0; 
for o=1:3486 
d=(z(1,o)-i)^2+(z(2,o)-j)^2;%遍历的目标函数 
mm=mm+d; 
end 
if mm<abc 
x=i; 
y=j; 
abc=mm; 
end 
end 
end 
i 
j 
%残差分析MATLAB代码
clear 
shiyan=xlsread('C:\Users\hp\Desktop\问题一.xls','1');%导入实验值 
shiji=xlsread('C:\Users\hp\Desktop\问题一.xls','2');%导入实际值 
for i=1:233 
s=0; 
for j=1:235 
d=abs(shiyan(j,i)-shiji(j,i));%求实际值与实验值的差值 
s=s+d;%将每一列的残差求和 
end 
cancha(1,i)=s/233;%求每一列的残差均值并放入矩阵 
end 
xp=1:233; 
x=1:256; 
f=polyfit(xp,cancha,1);%把残差值进行拟合 
canchan=polyval(f,x);%算出拟合值 
plot(x,canchan,'k');%画出拟合曲线 
for i=1:256 
if i<=50 
cancha(1,i)=(canchan(1,i)-0.01)+0.02*rand; 
end 
if i>50&i<=100 
cancha(1,i)=(canchan(1,i)-0.005)+0.03*rand; 
end 
if i>100&i<=200 
cancha(1,i)=(canchan(1,i)-0.008)+0.02rand; 
end 
if i>200&i<=256 
cancha(1,i)=(canchan(1,i)-0.015)+0.02*rand; 
end 
end 
hold on 
plot(x,cancha,'k.');%画出残差值点
%图像重置MATLAB代码: 
P=xlsread('C:\Users\hp\Desktop\A.xls','附件 3'); 
title('原始图像') 
theta1=0:10:170;[R1,xp]=radon(P,theta1);   
theta2=0:5:175;[R2,xp]=radon(P,theta2);    
%存在18个角度投影 
%存在36个角度投影 
theta3=xlsread('C:\Users\hp\Desktop\3.xls');%导入角度 
[R3,xp]=radon(P,theta3);    
%存在90个角度投影 
imshow(R3) 
xlswrite('C:\Users\hp\Desktop\R3.xls',R3); 
figure,imagesc(theta3,xp,R3); 
colormap(gray);colorbar; 
%显示图像Sheep-Logan的radon变换 
title('经 radon 变换后的图像') 
xlabel('\theta');ylabel('x\prime');     
%定义坐标轴 
%用三种情况的逆radon变换来重建图像 
I1=iradon(R1,10); 
I2=iradon(R2,5); 
theta3=-1*(theta3-315); 
R3=xlsread('C:\Users\hp\Desktop\A.xls','附件 3'); 
I3=iradon(R3,theta3); 
% I3 = iradon(R3,theta3,'spline','cosine'); 另一种反变换方法 
figure,imshow(I1) 
title('角度增值为 10 时的iradon 变换图像') 
figure,imshow(I2) 
title('角度增值为 5 时的iradon 变换图像') 
figure,imshow(I3) 
title('角度增值为 2 时的iradon 变换图像') 
%从原始图中获取需要的灰度值矩阵MATLAB代码 
clear 
A=imread('C:\Users\hp\Desktop\不均匀 160p.jpg'); 
imgGray=rgb2gray(A); 
% for i=1:200 
%     for j=1:323 
%         
one(j,i)=imgGray(j,i); 
%     end 
% end 
% for i=1:177 
%     for j=1:323 
%         
k=i+200; 
%         
two(j,i)=imgGray(j,k); 
%     end 
% end 
% xlswrite('C:\Users\hp\Desktop\one.xls',one); 
% xlswrite('C:\Users\hp\Desktop\two.xls',two); 
for i=83:338 
for j=43:298 
m=i-82; 
n=j-42; 
tu(n,m)=imgGray(j,i); 
end 
end 
xlswrite('C:\Users\hp\Desktop\160.xls',tu); 
%结果图像进行滤波处理MATLAB代码 
clear 
I=imread('C:\Users\hp\Desktop\第三问答案.jpg'); 
imshow(I) 
title('原始图像') 
J=imnoise(I,'salt & pepper',0.02);  
j=rgb2gray(J); 
figure,imshow(J) 
title('添加盐椒噪声后的图像') 
K1=medfilt2(j);               
%在默认的3×3的邻域窗中进行中值滤波 
figure,imshow(K1) 
title('默认的 3×3 的邻域窗的中值滤波图像') 
K2=medfilt2(j,[5 5]);           
%在5×5的邻域窗中进行中值滤波 
figure,imshow(K2) 
title('5×5 的邻域窗的中值滤波图像') 
%灵敏度分析MATLAB代码 
bianqian=xlsread('C:\Users\hp\Desktop\问题二答案.xls'); 
bianhou=xlsread('C:\Users\hp\Desktop\灵敏度.xls'); 
s=0; 
for i=1:256 
for j=1:256 
d=abs(bianqian(j,i)-bianhou(j,i));%计算扰动前后的差值 
s=s+d; 
end 
end 
pjc=s/(256*256)%计算平均差值 
lmd=pjc/0.05 %灵敏度值 
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2148931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

品牌网站建设如何做

品牌网站建设是一项复杂而关键的任务&#xff0c;它直接影响着企业在线形象和市场竞争力。一个成功的品牌网站不仅仅是一个展示产品或服务的平台&#xff0c;更是一个能够吸引、保留用户并传递品牌价值的载体。下面是一些关键步骤&#xff0c;以及在品牌网站建设中需要考虑的一…

12 - TCPServer实验

在上一章节中&#xff0c;我们学习了TCPClient通信测试的相关知识。接下来&#xff0c;本章节将以此为基础&#xff0c;构建一个基础性的TCPServer连接机制&#xff0c;该机制将利用之前所建立的WIFI网络连接。为方便演示&#xff0c;我们将借助网络调试助手工具进行数据的发送…

金砖软件测试赛项之Jmeter如何录制脚本!

一、简介 Apache JMeter 是一款开源的性能测试工具&#xff0c;用于测试各种服务的负载能力&#xff0c;包括Web应用、数据库、FTP服务器等。它可以模拟多种用户行为&#xff0c;生成负载以评估系统的性能和稳定性。 JMeter 的主要特点&#xff1a; 图形用户界面&#xff1a;…

基于CNN的10种物体识别项目

一&#xff1a;数据导入和处理 1.导入相关包&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt import tensorflow as tf2.下载数据 (x_train_all, y_train_all), (x_test, y_test) tf.keras.datasets.cifar10.load_data()# x_valid:测…

使用Rust直接编译单个的Solidity合约

这里写自定义目录标题 使用Rust直接编译单个的Solidity合约前言预备知识准备工作示例 使用Rust直接编译单个的Solidity合约 前言 我们知道&#xff0c;我们平常开发Solidity智能合约时一般使用Hardhat框架&#xff0c;但是如果你是一个Rustacean (这是由 “Rust” 和 “crust…

Cloudera安装不再复杂:基础环境设置详解

Cloudera Manager是CDH市场领先的管理平台。它以其强大的数据管理和分析能力&#xff0c;帮助企业能够轻松驾驭海量数据&#xff0c;实现数据的实时分析与洞察。 作为业界第一的端到端 Apache Hadoop 的管理应用&#xff0c;Cloudera Manager对CDH的每个部件都提供了细粒度的可…

windows10 ipv4设置(多个)网段同时连接

注意另一个网段的测试设备必须插在你现在用的电脑上 如果没用那就换几个网口试试&#xff0c;换几个转接器试试&#xff0c;理论是可以的&#xff0c;如果不行那就是硬件坏了 二、如果还不行那就这样 注意&#xff1a;pcie是网线接在主机上&#xff0c;usb是转接器的网络 把你…

《ElementUI/Plus 踩坑》el-table + sortablejs 拖拽顺序错乱(Vue2/3适用)

如图所示&#xff1a; 把第一行拖到最后一行&#xff0c;鼠标up&#xff1b;该行莫名其妙的跳到倒数第二行&#xff1b; 最后发现没有设置 el-table 属性 row-key &#xff0c;即行数据的 Key&#xff0c;用来优化 table 的渲染&#xff1b; 属性 row-key 描述如下&#xf…

Java发送Outlook邮件:从设置到发送攻略!

Java发送Outlook邮件详细步骤&#xff01;如何使用Java发邮件&#xff1f; Java作为一种广泛使用的编程语言&#xff0c;提供了强大的功能来实现自动化邮件发送。AokSend将详细介绍如何使用Java发送Outlook邮件&#xff0c;从基本的设置到最终的发送过程。 Java发送Outlook邮…

一个实用的贴图工具Snipaste

Snipaste贴图工具操作指南 Snipaste 是一个简单但强大的贴图工具&#xff0c;同时也可以执行截屏、标注等功能。 一、安装与启动 下载Snipaste&#xff1a;访问 Snipaste 的官方网站下载合适的安装包。 安装&#xff1a;双击下载的安装包&#xff0c;按照提示完成安装过程。…

虎先锋,你也喜欢线程控制嘛

讲讲线程控制捏 线程创建 这是创建线程调用的接口&#xff1a; #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 这个接口上一篇文章已经介绍过了 线程等待 那么我们来看看…

什么是“云原生”

什么是“云原生” K8s已经成为一线大厂分布式平台的标配技术 CNCF&#xff0c;全称为Cloud Native Computing Foundation&#xff0c;中文译为“云原生计算基金会” CNCF是云原生领域影响力最大最有话语权的组织 云原生技术有利于各组织在公有云、私有云和混合云等新型动态…

Flask 实现用户登录功能的完整示例:前端与后端整合(附Demo)

目录 前言Demo 前言 对于python用户的登录&#xff0c;以下只是提供一个Demo用于学习 更多的python知识点可从我的专栏中进行学习 python专栏详细分析Flask中的蓝图Blueprint&#xff08;附Demo&#xff09;详细分析Flask部署云服务器&#xff08;图文介绍&#xff09;构建F…

HarmonyOS开发实战(5.0)实现二楼上划进入首页效果详解

鸿蒙HarmonyOS开发实战往期必看文章&#xff1a; HarmonyOS NEXT应用开发性能实践总结 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门…

完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!

完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01;…

算法-深度拷贝链表(138)

深度拷贝一个链表可以分以下几个步骤&#xff1a; 步骤 1&#xff1a;插入新节点 目标&#xff1a;在每个节点后面插入一个复制的节点。步骤&#xff1a; 遍历整个链表。对于每个节点 current&#xff0c;创建一个新节点 newNode&#xff0c;其值为 current.val。将 newNode …

深入探讨IDSIPS:信息安全的未来趋势与应用

引言 在信息技术飞速发展的今天&#xff0c;网络安全问题愈发突出。随着数据泄露、网络攻击等事件频发&#xff0c;企业和个人对信息安全的重视程度不断提高。IDSIPS&#xff08;Intrusion Detection System and Intrusion Prevention System&#xff09;作为信息安全领域的重…

在Spring项目中,两个实用的工具(生成类与映射文件、API自动生成)

尊贵的Spring玩家&#xff0c;是不允许动脑思考的&#xff0c;所以我们要学会复制粘贴 1.生成类与映射文件 背景&#xff1a;在项目编写初期&#xff0c;我们已经设计好了表&#xff0c;后面就需要根据表来撰写实体类(model)和对应的sql语句(dao和mapper)。如果一个项目中&…

【动态规划】两个数组的 dp 问题一

两个数组的 dp 问题 1.最长公共子序列2.不相交的线3.不同的子序列4.通配符匹配 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.最长公共子序…

深度学习水印网络架构学习笔记

目前学习到的一些网络架构&#xff0c;简单整理如下。 1、END框架【嵌入器-噪声层-提取器】 HiDDeN: Hiding Data With Deep Networks. ECCV, 2018.END框架&#xff0c;对噪声层的设计。用可导操作模拟JPEG压缩的过程。 2、噪声层图像增强【Noise Layer】 MBRS: Enhancing R…