数字图像处理 图像缩放以及旋转的算法代码

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;
%****************************************************
for i=1:m1
    for j=1:n1;
        J(i,j)=I(round(i/M),round(j/M));
    end
end
%*****************************************************
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);

温馨提示:内容为网友见解,仅供参考
无其他回答

数字图像处理 图像缩放以及旋转的算法代码
n]=size(I);%%% 缩小 临近法M = 0.5; %放大倍数%新的图像大小m1=m*M;n1=n*M;%***for i=1:m1 for j=1:n1; J(i,j)=I(round(i\/M),round(j\/M)); endend%***figure; imshow(J);title('缩小图像

DSP C6000教学实验箱操作教程_数字图像处理:5-3 图像缩放
软件操作:首先导入并编译工程,通过CCS连接实验箱并运行程序。运行过程中,CCS Console会显示相关信息,处理后可通过图像分析工具对比原图与缩放后的图片,查看图片属性。操作步骤:加载原图(尺寸640*380)和缩放后的图片(尺寸960*570),并检查out.txt文件的设置。实验结束后,断开CCS连接并关闭电源。通过...

数字图像处理(c++ opencv):图像复原与重建-常见的滤波方法--自适应...
上述代码实现了一个简单的自适应中值滤波器,其中`threshold`参数用于控制噪声检测的灵敏度。通过调整这个参数,可以实现对不同噪声水平的图像进行处理。实现自适应中值滤波器的过程,不仅需要考虑算法本身的实现细节,还需要综合考虑图像数据的格式、OpenCV库的使用方法以及程序的优化策略。在实际应用中,还需要...

数字图像处理—边界跟踪算法Suzuki85
Suzuki85算法详解:数字化图像的边界追踪与拓扑分析 Suzuki85是一种针对二值图像的处理方法,它通过边界跟踪技术,将图像转化为边界表示,并揭示各边界之间的拓扑结构。核心概念是链码,包括4-连通和8-连通两种形式,其中8-连通更为常用,通过编码边界点的方向信息,形成链码。以一个物体轮廓为例,链码从起...

C#数字图像处理算法典型实例的目录
第1章绪论1.1数字图像处理概述1.2C#概述1.2.1C#特点1.2.2WinForm编程1.2.3GDI+1.3补充说明第2章C#数字图像处理的3种方法2.1C#图像处理基础2.1.1Bitmap类2.1.2BitmapData类2.1.3Graphics类2.2彩色图像灰度化2.3彩色图像灰度化编程实例2.3.1使用图像2.3.2图像处理的3种方法2.4小结...

第三章 图像的几何变换
图像的转置就是将横坐标与纵坐标交换位置。转置后图像宽度与高度对调。图像的缩放数学表达式为:其中,sx与sy为缩放系数。这里采用的是向后映射。在影射过程中,会产生浮点坐标像素,它可以通过一系列算法获得浮点坐标的近似值。常见插值法有最邻近插值法、双线性插值法与二次立方插值法 图像旋转过程中,...

数字图像处理有哪些小的研究方向
1)预处理。包括特定图像增强、放大插值、去噪、去模糊、分割等。2)压缩。是一个悠久的方向,但一直有人在研究。这两年最红火的压缩感知把压缩和成像结合在一起。3)特征提取。最近主要集中在不变特征提取,即旋转不变、缩放不变等,比如SIFT,SURF等。4)识别。这个太多,人脸识别、车牌识别、虹膜...

数字图像处理,学完冈萨雷斯的数字图像处理后会变得有多牛1
形态学梯度、顶帽黑帽变换 - 提取连通域 七、图像分割 - 孤立点检测 - 线检测 - 边缘检测步骤、图像梯度及梯度算子(Roberts、Prewitt、Sobel、Kirsch、log、canny)- 全局阈值分割 学习此内容将为理解和应用数字图像处理技术奠定基础,通过实践代码实例,逐步深入理解图像处理的原理和应用。

如何调整像素
2. 缩放图像 缩放图像是另一种调整像素大小的方法。缩放图像可以将图像的像素数增加或减少,从而改变图像的大小。缩放图像时,可以选择保持图像的宽高比例不变,或者强制改变宽高比例。缩放图像时,需要注意保持图像的清晰度和细节。3. 重新采样图像 重新采样图像是一种将图像从一个分辨率转换为另一个...

数字图像处理(c++ opencv):图像分割-基本边缘检测--canny边缘检测_百度...
在数字图像处理中,C++与OpenCV的结合尤其突出,其中Canny边缘检测算法因其高效和准确性而备受青睐。Canny算法的核心目标在于减少误检、精确定位边缘和提供单点响应。以下是其主要步骤:首先,通过高斯滤波器平滑图像,以降低噪声的影响,这是边缘检测的普遍预处理步骤。接着,计算梯度幅值和方向,使用Prewitt...

相似回答