数字图像处理之几何变换

数字图像处理复习笔记

数字图像处理笔记,方便大家理解系列,发文章也是为了督促自己复习嘿嘿,但是自己对这个排版还不是很熟练,以后多加练习

数字图像处理之几何变换

首先了解一下图像处理的一丢丢命令吧

F=imread(rice.jpg);

这个就是把图片读入进来了,然后注意读入图片的时候要加上文件的后缀名即可。

有时候不确定我们读入或者要处理数据的类型
用上这个语句即可

whos F

为了让图片可以直观展示出来,我们用上这个语句即可

imshow(F);

将本身的彩色图像转化为灰色图像

J=rgb2gray(F);

这样读入进来的数据就变成一个二维数组了

然后还有一点要非常非常注意的
就是我们的数据类型,我们的imread语句进行图片读入的时候,都是uint8类型的数据,在对数据进行操作的时候,应该对数据类型进行转换,否则就会出现运算方面的错误。

几何变换理解

几何变换又称为空间变换,是将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。不改变图像的像素值,只是在图像平面上进行像素的重新安排。

对于几何变换,我尽量不啰嗦的语言让大家理解
就相当于一个方格,里面有很多芝麻,我们按照一定的线性关系挪动芝麻,改变他们的坐标位置,但是不改变芝麻本身。

图像平移

首先了解图像平移的变换公式
x1=x0+a;
y1=y0+b;
(x0,y0)是原始图像的坐标,(x1,y1)是变换后图像的坐标
假如我要把图像向右移动a个单位,向下移动b个单位

%move函数实现线性平移
%I表示原图像
%a表示水平右移距离
%b表示垂直下移距离
%J表示结果图像
function [ J ] = move( I,a,b )
[M,N,D]=size(I);
J=I;%将原始图像规格进行copy
for d=1:D
    for i=1:M
        for j=1:N
            if((i-a>0)&(i-a<M)&(j-b>0)&(j-b<N))
                J(i,j,d)=I(i-a,j-b,d);%从原图像坐标点到新图像坐标点的映射
            else
                J(i,j,d)=0;%新图像外的坐标点置黑
            end
        end
    end
end
end

一开始的时候,我是连这个公式也不太理解的,很奇怪,不是加吗?为什么在写代码的时候变成减了。
仔细分析一下我们的平移之后的图像是怎么形成的便可以懂了。

J(i,j)=I(i-a,j-b);
分析这个式子,要求新图像(i,j)处的像素点的值,那是不是应该找原来图像(i-a,j-b)的值了呀,因为新图像坐标值显然大于原来图像

相信我这么解释大家都理解了吧
或者利用公式推导
x0=i-a
y0=j-b;
x1=x0+a=i;
y1=y0+b=j;
是不是完全跟我们之前的分析是不冲突的呀,所以图像处理,先进行公式推导是很便于理解的。

图像镜像变换

例如水平镜像的公式
x1=M-x0;
y1=y0;

[M,N]=size(F);
%mirror函数实现镜像变换功能
%参数I为原图像
%参数n=1时,实现水平镜像变换
%参数n=2时,实现垂直镜像变换
%参数n=3时,实现水平垂直镜像变换
function [ J ] = mirror( I,n )
[M,N,D]=size(I);
J=I;
if(n==1)%进行水平变换
    for d=1:D
        for i=1:M
            for j=1:N
                J(i,j,d)=I(i,N-j+1,d);
            end
        end
    end
elseif(n==2)%进行垂直变换
    for d=1:D
        for i=1:M
            for j=1:N
                J(i,j,d)=I(M-i+1,j,d);
            end
        end
    end
elseif(n==3)%水平垂直变换
    for d=1:D
        for i=1:M
            for j=1:N
                J(i,j,d)=M(M-i+1,N-j+1,d);
            end
        end
    end
else
    error('n is wrong');

end

救命,我太懒了,不想打字巴拉巴拉了
大家有需要我解释啥的评论即可,我继续巴拉巴拉

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值