Index=0:N-1; Hist{2}=log(Index+20)/60; % 15 Hist{2}=Hist{2}/sum(Hist{2}); Hist_cumulation{2}=cumsum(Hist{2}); subplot(3,3,6),stem(0:N-1,Hist{2}),title('log函数变换直方图')
时间: 2023-06-20 11:10:02 浏览: 100
这段代码是在进行直方图处理,将 Index 数组中的每个元素加上 20,然后取对数并除以 60,最后对处理后的数组进行归一化得到 Hist{2} 数组。然后使用 stem 函数将 Hist{2} 数组绘制为一个离散的图像,其中 x 轴为 0 到 N-1,y 轴为 Hist{2} 的值。最后在子图的标题中注明该图是对原始数据进行 log 函数变换后的直方图。
相关问题
I=imread('0294.jpg'); I=imresize(I,[300 300]); I1=RGB2Lab(I); L1 = double(I1(:,:,1)); L2 = double(I1(:,:,2)); L3 = double(I1(:,:,3)); PL1=mean(L1(:)); PL2=mean(L2(:)); PL3=mean(L3(:)); [m,n]=size(L1); for i=1:m for j=1:n LL1(i,j)=abs(L1(i,j)-PL1); end end for i=1:m for j=1:n LL2(i,j)=abs(L2(i,j)-PL2); end end for i=1:m for j=1:n LL3(i,j)=abs(L3(i,j)-PL3); end end LLL1=reshape(LL1,1,[]); SL1=std(LLL1); LLL2=reshape(LL2,1,[]); SL2=std(LLL2); LLL3=reshape(LL3,1,[]); SL3=std(LLL3); %比较标准差最大 SL=max(max(SL1,SL2),SL3); G = fspecial('gaussian', [5 5], 1); GL1=imfilter(LL1, G, 'circular'); hist=imhist(GL1)/prod(size(GL1)); G1=find(hist); H1=-hist(G1)'*log2(hist(G1)); GL2=imfilter(LL2, G, 'circular'); hist=imhist(GL2)/prod(size(GL2)); G2=find(hist); H2=-hist(G2)'*log2(hist(G2)); GL3=imfilter(LL3, G, 'circular'); hist=imhist(GL3)/prod(size(GL3)); G3=find(hist); H3=-hist(G3)'*log2(hist(G3)); %比较二维熵最小的 H=min(min(H1,H2),H3); if(SL==SL1) ZL=LL1; end if(SL==SL2) ZL=LL2; end if(SL==SL3) ZL=LL3; end if(H==H1) HL=LL1; end if(H==H2) HL=LL2; end if(H==H3) HL=LL3; end %计算初始显著图 C=0.35*ZL+0.65*HL; [Z E]=lrr(C,0.01);%全局低秩Z为低秩部分E为稀疏部分 ZZ=(C-Z).*C; figure,imshow(ZZ,[]);如何调整代码使其在处理图片时最终输出的图片不会改变大小
您可以将imresize函数中的大小参数改为原图像的大小,即:
```
I=imread('0294.jpg');
I1=RGB2Lab(I);
L1 = double(I1(:,:,1));
L2 = double(I1(:,:,2));
L3 = double(I1(:,:,3));
PL1=mean(L1(:));
PL2=mean(L2(:));
PL3=mean(L3(:));
[m,n]=size(L1);
for i=1:m
for j=1:n
LL1(i,j)=abs(L1(i,j)-PL1);
end
end
for i=1:m
for j=1:n
LL2(i,j)=abs(L2(i,j)-PL2);
end
end
for i=1:m
for j=1:n
LL3(i,j)=abs(L3(i,j)-PL3);
end
end
LLL1=reshape(LL1,1,[]);
SL1=std(LLL1);
LLL2=reshape(LL2,1,[]);
SL2=std(LLL2);
LLL3=reshape(LL3,1,[]);
SL3=std(LLL3);
%比较标准差最大
SL=max(max(SL1,SL2),SL3);
G = fspecial('gaussian', [5 5], 1);
GL1=imfilter(LL1, G, 'circular');
hist=imhist(GL1)/prod(size(GL1));
G1=find(hist);
H1=-hist(G1)'*log2(hist(G1));
GL2=imfilter(LL2, G, 'circular');
hist=imhist(GL2)/prod(size(GL2));
G2=find(hist);
H2=-hist(G2)'*log2(hist(G2));
GL3=imfilter(LL3, G, 'circular');
hist=imhist(GL3)/prod(size(GL3));
G3=find(hist);
H3=-hist(G3)'*log2(hist(G3));
%比较二维熵最小的
H=min(min(H1,H2),H3);
if(SL==SL1)
ZL=LL1;
end
if(SL==SL2)
ZL=LL2;
end
if(SL==SL3)
ZL=LL3;
end
if(H==H1)
HL=LL1;
end
if(H==H2)
HL=LL2;
end
if(H==H3)
HL=LL3;
end
%计算初始显著图
C=0.35*ZL+0.65*HL;
[Z E]=lrr(C,0.01);%全局低秩Z为低秩部分E为稀疏部分
ZZ=(C-Z).*C;
figure,imshow(ZZ,[]);
```
这样就可以保持输出图片与原图像的大小一致。
hist = [] log_each = 500 for step in range(1, N_STEPS + 1):是什么意思
这是一个Python代码片段,其中:
- `hist`是一个空列表。
- `log_each`是一个变量,其值为500。
- `N_STEPS`是一个常量或变量,代表一个整数值。
- `for step in range(1, N_STEPS + 1):`是一个循环语句,其意思是从1到N_STEPS循环,每次循环将当前循环次数存储在变量`step`中。
因此,这段代码的含义是循环执行 `N_STEPS` 次,每500步打印一次历史变量`hist`,并将当前循环次数存储在变量`step`中。
阅读全文