图像分割
答案:1 悬赏:40 手机版
解决时间 2021-01-28 23:46
- 提问者网友:放下
- 2021-01-28 00:48
图像分割
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-01-28 02:11
图A的按照图B的直方图进行规定化也只是近似规定化,就是如何将图A中个像素值的灰度值变化得到一幅新图,该图的灰度值按照图B直方图的规律进行分布。这很难得到严格遵守图B的直方图分布规律。这种逼近有很多种算法。这个就可以了:演示其中一张图
%规定化直方图
clear all
clc
A=imread('girl.png'); %读入图像
A=rgb2gray(A);
imshow(A) %显示出来
title('输入图像')
%绘制直方图
[m,n]=size(A); %测量图像尺寸
B=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
B(k+1)=length(find(A==k)); %计算每级灰度出现的概率,将其存入B中相应位置
end
figure,bar(0:255,B,'g'); %绘制直方图
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
axis([0,260,0,0.026])
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=B(j)+S1(i); %计算原灰度图累计直方图
end
end
S3=zeros(1,256);
for i=1:150
S3(i+80)=B(i);
end
S4=zeros(1,256);
for i=81:230
S4(i)=B(i)+S3(i);
end
counts=S4;
S2=zeros(1,256);
for i=1:256
for j=1:i
S2(i)=counts(j)+S2(i);
end
end; %累计规定化直方图
%对比直方图,找到相差最小的灰度级
S=zeros(256,256);
for i=1:256
for j=1:256
S(j,i)=abs(S2(j)-S1(i));
end
end
[Y,T]=min(S);
%确定变换关系,重组直方图
for j=1:256
H(j)=sum(B(find(T==j)));
end
figure,bar(0:255,H,'g') %显示规定化后的直方图
title('规定化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
axis([0,260,0,0.03])
%显示规定图
PA=A;
for i=0:255
PA(find(A==i))=T(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像
title('规定化后图像')...余下全文>>
%规定化直方图
clear all
clc
A=imread('girl.png'); %读入图像
A=rgb2gray(A);
imshow(A) %显示出来
title('输入图像')
%绘制直方图
[m,n]=size(A); %测量图像尺寸
B=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
B(k+1)=length(find(A==k)); %计算每级灰度出现的概率,将其存入B中相应位置
end
figure,bar(0:255,B,'g'); %绘制直方图
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
axis([0,260,0,0.026])
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=B(j)+S1(i); %计算原灰度图累计直方图
end
end
S3=zeros(1,256);
for i=1:150
S3(i+80)=B(i);
end
S4=zeros(1,256);
for i=81:230
S4(i)=B(i)+S3(i);
end
counts=S4;
S2=zeros(1,256);
for i=1:256
for j=1:i
S2(i)=counts(j)+S2(i);
end
end; %累计规定化直方图
%对比直方图,找到相差最小的灰度级
S=zeros(256,256);
for i=1:256
for j=1:256
S(j,i)=abs(S2(j)-S1(i));
end
end
[Y,T]=min(S);
%确定变换关系,重组直方图
for j=1:256
H(j)=sum(B(find(T==j)));
end
figure,bar(0:255,H,'g') %显示规定化后的直方图
title('规定化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
axis([0,260,0,0.03])
%显示规定图
PA=A;
for i=0:255
PA(find(A==i))=T(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像
title('规定化后图像')...余下全文>>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯