数字图像处理 图像缩放以及旋转的算法代码
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/03 04:12:17
数字图像处理 图像缩放以及旋转的算法代码
MATLAB环境分别实现
利用最近邻方法实现图像的缩放
利用双线性插值算法实现图像的缩放
利用双线性插值算法实现图像的旋转
以 lena.bmp为例,
MATLAB环境分别实现
利用最近邻方法实现图像的缩放
利用双线性插值算法实现图像的缩放
利用双线性插值算法实现图像的旋转
以 lena.bmp为例,
clear all;
I = imread('lena.bmp');
figure; imshow(I);title('原图像');
[m,n]=size(I);
%%% 缩小 临近法
M = 0.5; %放大倍数
%新的图像大小
m1=m*M;n1=n*M;
%
figure; imshow(J);title('缩小图像');
%%% 放大 双线性插值法
I2 = double(I);
N = 1.5; %放大倍数
%新的图像大小
m2=m*N;n2=n*N;
J2=zeros(m2,n2);
for i=1:m2
for j=1:n2
x=i/N;
y=j/N;
u=floor(x);
v=floor(y);
a=x-u;
b=y-v;
if u+2<=m & v+2<=n
J2(i,j)=I2(u+1,v+1)*(1-a)*(1-b)+I2(u+2,v+1)*a*(1-b)+I2(u+1,v+2)*(1-a)*b+I2(u+2,v+2)*a*b;
end
end
end
J2 = uint8(J2);
figure;imshow(J2);title('放大图像');
%%%%% 旋转
R = 45*pi/180; %旋转角度
I = double(I);
%新图像大小
m2 = ceil(m*cos(R)+n*sin(R));
n2 = ceil(m*sin(R)+n*cos(R));
u0= m*sin(R);%平移量
%变换矩阵
T=[cos(R),sin(R);-sin(R),cos(R)];
L = zeros(m2,n2);
for u=1:n2
for v=1:m2
%新图像坐标变换到原图像坐标x和y中
temp = T*([u;v]-[u0;0]);
x= temp(1);
y= temp(2);
if x>=1 & x<=m & y>=1 & y<=n %若变换出的x和y在原图像范围内
x_low=floor(x);
x_up=ceil(x);
y_low=floor(y);
y_up=ceil(y);
%双线性插值,p1到p4是(x,y)周围的四个点
p1=I(x_low,y_low);
p2=I(x_up,y_low);
p3=I(x_low,y_low);
p4=I(x_up,y_up);
s=x-x_low;
t=y-y_low;
L(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4;
end
end
end
L=uint8(L);
figure;imshow(L);
I = imread('lena.bmp');
figure; imshow(I);title('原图像');
[m,n]=size(I);
%%% 缩小 临近法
M = 0.5; %放大倍数
%新的图像大小
m1=m*M;n1=n*M;
%
figure; imshow(J);title('缩小图像');
%%% 放大 双线性插值法
I2 = double(I);
N = 1.5; %放大倍数
%新的图像大小
m2=m*N;n2=n*N;
J2=zeros(m2,n2);
for i=1:m2
for j=1:n2
x=i/N;
y=j/N;
u=floor(x);
v=floor(y);
a=x-u;
b=y-v;
if u+2<=m & v+2<=n
J2(i,j)=I2(u+1,v+1)*(1-a)*(1-b)+I2(u+2,v+1)*a*(1-b)+I2(u+1,v+2)*(1-a)*b+I2(u+2,v+2)*a*b;
end
end
end
J2 = uint8(J2);
figure;imshow(J2);title('放大图像');
%%%%% 旋转
R = 45*pi/180; %旋转角度
I = double(I);
%新图像大小
m2 = ceil(m*cos(R)+n*sin(R));
n2 = ceil(m*sin(R)+n*cos(R));
u0= m*sin(R);%平移量
%变换矩阵
T=[cos(R),sin(R);-sin(R),cos(R)];
L = zeros(m2,n2);
for u=1:n2
for v=1:m2
%新图像坐标变换到原图像坐标x和y中
temp = T*([u;v]-[u0;0]);
x= temp(1);
y= temp(2);
if x>=1 & x<=m & y>=1 & y<=n %若变换出的x和y在原图像范围内
x_low=floor(x);
x_up=ceil(x);
y_low=floor(y);
y_up=ceil(y);
%双线性插值,p1到p4是(x,y)周围的四个点
p1=I(x_low,y_low);
p2=I(x_up,y_low);
p3=I(x_low,y_low);
p4=I(x_up,y_up);
s=x-x_low;
t=y-y_low;
L(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4;
end
end
end
L=uint8(L);
figure;imshow(L);
数字图像处理 图像缩放以及旋转的算法代码
数字图像处理(matlab)中 判断图像中水平放置矩形的算法 是什么个意思
想问问关于一matlab数字图像处理代码的意义
在数字图像处理中图像膨胀的概念是什么
求MATLAB GUI 环境下 图像处理图像的平移,任意角度的旋转,缩放和翻转,仿射变换等的源代码
数字图像处理的学习过程
关于数字图像处理的问题
简析数字图像和模拟图像的区别,以及计算机中图像和图形的区别.
本人研二 导师要我们选择数字图像处理的方向,请问都有哪些方向呢?图像算法算一个方向吗?图像加密,压缩,编码那个方向好一点
一篇英语文献以及翻译 主题关于数字图像处理的都可以
数字图像处理中的图像表示(描述)的过程就是特征提取的的过程是吗?
数字图像处理,