function Y0=PCNN(matrix,link_arrange,np) % matrix is the input image % np default value is 300 % link_arrange default is 13.0 % you better change this parameter in your's experiment alpha_L=1.0; alpha_Theta=5.0; beta=8; vL=0.2; vTheta=20; [p, q] = size(matrix); % Generate the null matrix that could be used L=zeros(p,q); U=zeros(p,q); Y=zeros(p,q); Y0=zeros(p,q); E=ones(p,q); % Compute the linking strength. center_x=round(link_arrange/2); center_y=round(link_arrange/2); W=zeros(link_arrange,link_arrange); for i=1:link_arrange for j=1:link_arrange if (i==center_x)&&(j==center_y) W(i,j)=1; else W(i,j)=1./sqrt((i-center_x).^2+(j-center_y).^2); end end end %% F=double(matrix); for i=1:1000 work = conv2(Y,W,'same'); L = exp( -1 / alpha_L) * L + vL * work; for row=1:p for col=1:q if Y(row,col) == 0 E(row,col) = exp( -1 / alpha_Theta) * E(row,col); else E(row,col) = vTheta; end end end U = F .* (1 + beta * L); for row=1:p for col=1:q if U(row,col) > E(row,col) Y(row,col) = 1; else Y(row,col) = 0; end end end Y0 = Y0 + Y; end end阈值是哪个符号?
时间: 2023-06-19 18:04:45 浏览: 90
在段代码中,阈值并没有使用符号来表示,而是使用了变量来表示。具体来说,在代码中使用了两个参数来控制阈值的大小,分别是alpha_Theta和vTheta。其中,alpha_Theta是一个衰减系数,用于控制阈值的衰减速度;vTheta是一个固定值,用于控制阈值的大小。在代码中,对于每个像素点,如果当前的Y值为0,则将该像素点的阈值E乘以alpha_Theta,否则将阈值E设置为vTheta。因此,阈值的大小取决于vTheta和alpha_Theta的取值。
相关问题
GA = Focus_Measure(I1); GB = Focus_Measure(I2); fire_time_imgA = PCNN(GA,13,300); fire_time_imgB = PCNN(GB,13,300); sel_logical = double(fire_time_imgA >=fire_time_imgB); Db = Majority_Filter(sel_logical,8); Db = Majority_Filter(Db,7);
这段代码主要是对两幅图像进行对比,并且使用了PCNN和多数滤波器对结果进行处理。
首先,对于两幅图像I1和I2,分别计算了它们的焦点度量值GA和GB,这个焦点度量值可以用来评估图像的清晰程度。
然后,使用PCNN模型对GA和GB进行处理,得到了fire_time_imgA和fire_time_imgB两个矩阵,其中记录了PCNN模型的输出结果。
接下来,将fire_time_imgA和fire_time_imgB进行比较,得到了sel_logical矩阵,其中的元素值为1表示对应位置上的像素在图像I1中的清晰程度高于在图像I2中的清晰程度,为0则相反。
最后,通过多数滤波器对sel_logical进行滤波,得到了Db矩阵,其中的元素值为1表示对应位置上的像素在图像I1中的清晰程度高于在图像I2中的清晰程度,并被大多数滤波器认定为正确的结果。
阅读全文