搜索内容 搜索用户

# 7 麦片

050

1主题 0最佳答案
 A=imread(filename); imshow(A); ImgHeight=size(A,1); ImgWidth=size(A,2); %图像反色 B=255-double(A); figure(2); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(B));title('反白显示'); %自动亮度，增亮后的均值为参数Light s1=min(min(A)); s2=max(max(A)); for i=1:ImgHeight     for j=1:ImgWidth        C(i,j)=(255-0)/(s2-s1)*(A(i,j)-s1);（这句会提醒出现“变量似乎会随着迭代次数改变而变化，请预分配内存，以提高运行速度”问题）     end end figure(3); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(C));title('自动亮度'); %灰度变换 scale=2.2;bias=-40; D=bias+scale*double(A); order = find(D>255); D(order)=255; order = find(D<0); D(order)=0; figure(4); t=0:255; Y=bias+scale*double(0:255); order = find(Y>255); Y(order)=255; order = find(Y<0); Y(order)=0; subplot(1,3,1);imshow(A);title('原图'); subplot(1,3,2);plot(0:255,Y);title('变换函数'); grid on;axis tight; subplot(1,3,3);imshow(uint8(D));title('灰度变换'); %灰度拉伸 a=2;b=70;E=A; for i=0 :255     order=find(A==i);     E(order)=255/(b-a)*(i-a); end order = find(E>255); E(order)=255; order = find(E<0); E(order)=0; figure(5); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(E));title('灰度拉伸'); %伪彩色处理 RED=[200 0 0]; GREEN=[0 255 0]; BLUE=[0 0 255]; F=zeros(size(A,1),size(A,2),3); [x y]=find(A<20); for i=1:size(x,1)*size(x,2)     F(x(i),y(i),:)=RED; end [x y]=find(A>=20 & A<40); for i=1:size(x,1)*size(x,2)     F(x(i),y(i),:)=GREEN; end [x y]=find(A>=40); for i=1:size(x,1)*size(x,2)     F(x(i),y(i),:)=BLUE; end figure(6); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(F));title('伪彩色处理'); %直方图均衡化处理 GrayScale=256; buff=zeros(GrayScale,1); for i=1:size(A,1)     for j=1:size(A,2)         buff(A(i,j))=buff(A(i,j))+1;     end end buff=buff/(size(A,1)*size(A,2)); figure(7); subplot(2,2,3);bar(0:GrayScale-1,buff);title('原图的直方图'); grid on;axis tight; subplot(2,2,1);imshow(A);title('原图'); %P Fprob=zeros(GrayScale,1); Fprob(1)=buff(1); for i=2:GrayScale     Fprob(i)=buff(i)+Fprob(i-1); end G=zeros(size(A,1),size(A,2)); buf=zeros(GrayScale,1); for i=1:GrayScale buf(round(Fprob(i)*(GrayScale-1)+1))=buf(round(Fprob(i)*(GrayScale-1)+1))+buff(i);        order=find(A==i);     G(order)=round(Fprob(i)*(GrayScale-1)+1);    end figure(7); subplot(2,2,4);bar(0:(GrayScale-1),buf); title('均衡化后的直方图'); grid on;axis tight; subplot(2,2,2);imshow(uint8(G));title('均衡化后的图'); 求大神帮忙解决一下这个是什么问题，谢谢

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 将for i=1:ImgHeight     for j=1:ImgWidth        C(i,j)=(255-0)/(s2-s1)*(A(i,j)-s1);（这句会提醒出现“变量似乎会随着迭代次数改变而变化，请预分配内存，以提高运行速度”问题）     end end复制代码 改为C=zeros(ImgHeight,ImgWidth); for i=1:ImgHeight     for j=1:ImgWidth        C(i,j)=(255-0)/(s2-s1)*(A(i,j)-s1);（这句会提醒出现“变量似乎会随着迭代次数改变而变化，请预分配内存，以提高运行速度”问题）     end end复制代码 试试

# 7 麦片

050

1主题 0最佳答案
楼主| 发表于 2020-6-20 00:47:28 | 显示全部楼层
 本帖最后由 柠檬小熊 于 2020-6-20 00:56 编辑 20141303 发表于 2020-6-19 21:42 将 改为 试试 这样子怎么解决呀？

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 改成 C=zeros(ImgHeight,ImgWidth,3); for i=1:ImgHeight     for j=1:ImgWidth        C(i,j)=(255-0)/(s2-s1)*(A(i,j)-s1);（这句会提醒出现“变量似乎会随着迭代次数改变而变化，请预分配内存，以提高运行速度”问题）     end end复制代码 试试

# 7 麦片

050

1主题 0最佳答案
楼主| 发表于 2020-6-20 14:52:29 | 显示全部楼层
 20141303 发表于 2020-6-20 10:30 改成 试试 还是这个样子:'(

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 改成 C=zeros(ImgHeight,ImgWidth,3); for i=1:ImgHeight     for j=1:ImgWidth        C(i,j,:)=(255-0)/(s2-s1)*(A(i,j)-s1);（这句会提醒出现“变量似乎会随着迭代次数改变而变化，请预分配内存，以提高运行速度”问题）     end end复制代码 试试

# 7 麦片

050

1主题 0最佳答案
楼主| 发表于 2020-6-20 15:54:14 | 显示全部楼层
 20141303 发表于 2020-6-20 15:37 改成 试试 for i=1:GrayScale buf(round(Fprob(i)*(GrayScale-1)+1))=buf(round(Fprob(i)*(GrayScale-1)+1))+buff(i);        order=find(A==i);     G(order)=round(Fprob(i)*(GrayScale-1)+1); （试图沿模糊的维增大数组。） end 这样子怎么解决呀？

# 7 麦片

050

1主题 0最佳答案
楼主| 发表于 2020-6-20 16:10:31 | 显示全部楼层
 20141303 发表于 2020-6-20 15:37 改成 试试 如果扩大维度就变成了这个样子

# 论坛优秀回答者

9主题 347最佳答案
• 关注者： 81

 请上传对应图片和完整程序，使别人可以运行

# 7 麦片

050

1主题 0最佳答案
楼主| 发表于 2020-6-20 17:01:21 | 显示全部楼层
 20141303 发表于 2020-6-20 16:24 请上传对应图片和完整程序，使别人可以运行 clear;close all; clc; filename='miaowu.bmp'; A=imread(filename); imshow(A); ImgHeight=size(A,1); ImgWidth=size(A,2); %图像反色 B=255-double(A); figure(2); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(B));title('反白显示'); %自动亮度，增亮后的均值为参数Light s1=min(min(A)); s2=max(max(A)); C=zeros(ImgHeight,ImgWidth,3); for i=1:ImgHeight     for j=1:ImgWidth        C(i,j,:)=(255-0)/(s2-s1).*(A(i,j)-s1);     end end figure(3); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(C));title('自动亮度'); %灰度变换 scale=2.2;bias=-40; D=bias+scale*double(A); order = D>255; D(order)=255; order = D<0; D(order)=0; figure(4); t=0:255; Y=bias+scale*double(0:255); order = Y>255; Y(order)=255; order = Y<0; Y(order)=0; subplot(1,3,1);imshow(A);title('原图'); subplot(1,3,2);plot(0:255,Y);title('变换函数'); grid on;axis tight; subplot(1,3,3);imshow(uint8(D));title('灰度变换'); %灰度拉伸 a=2;b=70;E=A; for i=0 :255     order=A==i;     E(order)=255/(b-a)*(i-a); end order = E>255; E(order)=255; order = find(E<0); E(order)=0; figure(5); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(E));title('灰度拉伸'); %伪彩色处理 RED=[200 0 0]; GREEN=[0 255 0]; BLUE=[0 0 255]; F=zeros(size(A,1),size(A,2),3); [x, y]=find(A<20); for i=1:size(x,1)*size(x,2)     F(x(i),y(i),:)=RED; end [x, y]=find(A>=20 & A<40); for i=1:size(x,1)*size(x,2)     F(x(i),y(i),:)=GREEN; end [x, y]=find(A>=40); for i=1:size(x,1)*size(x,2)     F(x(i),y(i),:)=BLUE; end figure(6); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);imshow(uint8(F));title('伪彩色处理'); %直方图均衡化处理 GrayScale=256; buff=zeros(GrayScale,1); for i=1:size(A,1)     for j=1:size(A,2)         buff(A(i,j))=buff(A(i,j))+1;     end end buff=buff/(size(A,1)*size(A,2)); figure(7); subplot(2,2,3);bar(0:GrayScale-1,buff);title('原图的直方图'); grid on;axis tight; subplot(2,2,1);imshow(A);title('原图'); %P Fprob=zeros(GrayScale,1); Fprob(1)=buff(1); for i=2:GrayScale     Fprob(i)=buff(i)+Fprob(i-1); end G=zeros(size(A,1),size(A,2)); buf=zeros(GrayScale,1); for i=1:GrayScale buf(round(Fprob(i)*(GrayScale-1)+1))=buf(round(Fprob(i)*(GrayScale-1)+1))+buff(i);        order=find(A==i);     G(order,:)=round(Fprob(i)*(GrayScale-1)+1);    end figure(7); subplot(2,2,4);bar(0:(GrayScale-1),buf); title('均衡化后的直方图'); grid on;axis tight; subplot(2,2,2);imshow(uint8(G));title('均衡化后的图');

 您需要登录后才可以回帖 登录 | 注册 本版积分规则 回帖后跳转到最后一页