图像的灰度显示以及平移、缩放、旋转探究.docx

图像的灰度显示以及平移、缩放、旋转探究.docx

图像的灰度显示以及平移、缩放、旋转代码实现程序说明及代码(1)、程序说明:本程序主要功能为灰度图像的显示、原始直方图的绘制、转换函数的绘制、直方图均衡化后的图像绘制及其直方图的绘制。并且,该程序接受任何灰度图像的输入,该输入以文件的形式打开。程序代码:clear allclose all[fn,pn,fi]=uigetfile(*.jpg,选择图片); %以文件打开的形式选择图片pic=imread([pn fn]);subplot(2,2,1);imshow(pic);title(原图);graydis=zeros(1,256); grayhist=zeros(1,256);new_graydis=zeros(1,256);new_grayhist=zeros(1,256);[h w]=size(pic);new_pic=zeros(h,w);for x=1:hfor y=1:w graydis(1,pic(x,y)+1)=graydis(1,pic(x,y)+1)+1;endendgrayhist=graydis./sum(graydis); %计算直方图subplot(2,2,2);plot(grayhist);title(灰度直方图);for i=2:256 grayhist(1,i)=grayhist(1,i)+grayhist(1,i-1);endfor i=1:256t(1,i)=floor(254*grayhist(1,i)+0.5);endfor i=1:256 new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i);endnew_grayhist=new_graydis./sum(new_graydis);%计算新的灰度直方图new_grayhistsubplot(2,2,4);plot(new_grayhist);title(均衡化后的灰度直方图);%计算直方图均衡后的新图new_picfor x=1:hfor y=1:w new_pic(x,y)=t(1,pic(x,y)+1);endendsubplot(2,2,3);imshow(new_pic,[]);title(直方图均衡化后的图);figure,plot(t);title(转换函数);(2)、程序说明:本程序主要功能为图像的平移、以双线性插值方法进行的缩放和旋转、以最近邻方法进行的缩放和旋转;程序接受任何tif图像的输入,该输入以文件形式打开;程序接受任意横向平移、纵向平移数的输入;程序接受任意大小的缩放;程序接受任意角度的旋转。程序代码:平移代码clear; [fn,pn,fi]=uigetfile(*.tif,选择图片); %以文件打开的形式选择图片I=imread([pn fn]);[m, n] = size(I);a = str2double(inputdlg(请输入行平移数, INPUT scale factor, 1, {20}));%行默认平移20b = str2double(inputdlg(请输入列平移数, INPUT scale factor, 1, {10}));%列默认平移10p=m+abs(a);q=n+abs(b);jx=zeros(p,q);for i=1:mfor j=1:nif a=0 b=0 jx(a+i,b+j)=I(i,j);elseif a=0 b0 jx(a+i,j)=I(i,j);elseif a0 b=0 jx(i,b+j)=I(i,j);elseif a0 b0 jx(i,j)=I(i,j);endendend mt=uint8(jx); subplot(1,2,1);imshow(I);title(原图);subplot(1,2,2);imshow(mt);title(平移后的图);双线性插值缩放和旋转clear; %用双线性插值法实现图像缩放和旋转[fn,pn,fi]=uigetfile(*.tif,选择图片); %以文件打开的形式选择图片I=imread([pn fn]);[rows,cols]=size(I);K1 = str2double(inputdlg(请输入行缩放倍数, INPUT scale factor, 1, {0.5}));%行默认变为原来的0.5倍K2 = str2double(inputdlg(请输入列缩放倍数, INPUT scale factor, 1, {0.4}));%列默认变为原来的0.4倍width = K1 * rows;

文档评论(0)

1亿VIP精品文档

相关文档