matlab_数字图像处理代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%%%%%% 求对比度%%%%%%
clear;
clc;
[filename,pathname]=uigetfile({'*jpg;*.bmp;*.jpeg'},'load?image'); fpath=fullfile(pathname,filename);
A=imread(fpath);
figure(1);
imshow(A);
title('原图像')
img=rgb2gray(A);
figure(2);
imshow(img);
title('灰度后的');
img1=imnoise(img,'salt & pepper',0.05); %加入椒盐躁声
figure(3);
imshow(img1);
title('椒盐后的图像');
%%% K近邻域滤椒盐噪声%%% 3*3
%%% 找出与f(i,j)相近的像素值这里利用做差排序找出AAAA1=img1;
AAAA1=double(AAAA1);
%%%得到椒盐噪声图像
[m,n]=size(AAAA1);
for i=2:m-1
for j=2:n-1
ASD1=[AAAA1(i-1,j-1) AAAA1(i-1,j) AAAA1(i-1,j+1) ...
AAAA1(i,j-1) AAAA1(i,j) AAAA1(i,j+1) ...
AAAA1(i+1,j-1) AAAA1(i+1,j) AAAA1(i+1,j+1)];
aa=ASD1; %%随机设定的一个数组
b=AAAA1(i,j); %%取参照值
a=aa(:); %%将给定数组化为一维的
ab=(a(:)-b)'; %%将数组a与b做差abc=abs(ab);
abc=sort(abc); %%差值取绝对值并排序
[as1 as11] =find(abs((a(:)-b))==abc(1,1));
as=[as1 as11];
if ~isempty(abc(abc(:)~=abc(1,1)))
if ~isempty(abc)
abc1=abc(abc(:)~=abc(1,1));
[as2 as22]=find(abs((a(:)-b))==abc1(1,1));
as=[as1 as11;as2 as22];
end
end
if ~isempty(abc1(abc1(:)~=abc1(1,1)))
if ~isempty(abc1)
abc2=abc1(abc1(:)~=abc1(1,1));
[as3 as33]=find(abs((a(:)-b))==abc2(1,1));
as=[as1 as11;as2 as22;as3 as33];
end
end
if ~isempty(abc2(abc2(:)~=abc2(1,1)))
if ~isempty(abc2)
abc3=abc2(abc2(:)~=abc2(1,1));
[as4 as44]=find(abs((a(:)-b))==abc3(1,1));
as=[as1 as11;as2 as22;as3 as33;as4 as44];
end
end
if ~isempty(abc3(abc3(:)~=abc3(1,1)))
if ~isempty(abc3)
abc4=abc3(abc3(:)~=abc3(1,1));
[as5 as55]=find(abs((a(:)-b))==abc4(1,1));
as=[as1 as11;as2 as22;as3 as33;as4 as44;as5 as55];
end
end
if ~isempty(abc4(abc4(:)~=abc4(1,1)))
if ~isempty(abc4)
abc5=abc4(abc4(:)~=abc4(1,1));
[as6 as66]=find(abs((a(:)-b))==abc5(1,1));
as=[as1 as11;as2 as22;as3 as33;as4 as44;as5 as55;as6 as66];
end
end
%%%% as即是与b值相近的值的坐标包括和b相等的(这里是与b 值相差为六种值的情况不一定是六个值可能等于也可能大于%%%% 将以下坐标的值取第二个到第六个即是与b值相近的5个)
result=zeros(1,(length(as)-1));
for VB=2:6
result(VB-1)=a(as(VB,1));
end %%%求前五个的均值
AVERAGE=sum(result(:))/5;
AAAA1(i,j)=AVERAGE;
end
end
figure(9)
imshow(uint8(AAAA1));
title('K近邻域滤椒盐噪声后的图像');
clear;
clc;
I_gray=...
[1 5 255 225 100 200 255 200;...
1 7 254 225 100 10 10 9; ...
3 7 10 100 100 2 9 6;...
3 6 10 10 9 2 8 2;...
2 1 8 8 9
3
4 2;...
1 0 7 8 8 3
2 1;...
1 1 8 8 7
2 2 1;...
2 3 9 8 7 2 2 0]; %%%%%A可以是矩阵也可以是图像
[height,width]=size(I_gray); %测量图像尺寸参数
p=zeros(1,256); %预创建存放灰度出现概率的向量
for i=1:height
for j=1:width
p(I_gray(i,j) + 1) = p(I_gray(i,j) + 1) + 1;
end
end
s=zeros(1,256);
s(1)=p(1);
for i=2:256
s(i)=p(i) + s(i-1); %统计图像中<每个灰度级像素的累积个数,s(i):0,1,```,i-1
end
for i=1:256