欢迎来到皮皮网网首页

【眉山wap源码】【商城源码提供】【新纪元源码】imrotate 函数源码_imrotate函数原理

来源:直播推送源码 时间:2024-11-24 09:29:15

1.MATLAB图像处理imrotate
2.imrotateMatlab函数imrotate简介
3.图像处理几何运算

imrotate 函数源码_imrotate函数原理

MATLAB图像处理imrotate

       å¦‚果中间的图像没有黑色的点,就很简单了,直接用find(a==0)找到黑色的点的坐标,赋白就行。如果中间图有黑色,我写了个函数,可以把底面赋白,这程序其实不难,就是扫描赋值。

       function [r]=back2white(a)

       [in,函数函数jn]=size(a);

       for i=1:3%先把“镜框”赋白,因为里边那个矩形没紧贴外框

        for j=1:jn

        if a(i,j)~=

        a(i,j)=;

        end

        if a(in+1-i,j)~=

        a(in+1-i,j)=;

        end

        end

        for j=1:in%两竖边赋白

        if a(j,i)~=

        a(j,i)=;

        end

        if a(j,jn+1-i)~=

        a(j,jn+1-i)=;

        end

        end

       end

       for i=4:in-3

        j=4;

        while(a(i,j)<)%此处选为了保险

        a(i,j)=;

        j=j+1;

        end

        k=jn-3;

        while(a(i,k)<)

        a(i,k)=;

        k=k-1;

        end

       end

       r=a;

       PR(r);

imrotateMatlab函数imrotate简介

       Matlab中的imrotate函数是一个专门用于图像旋转操作的工具。在Matlab命令窗口中,源码原理你可以通过键入help imrotate、函数函数doc imrotate或者lookfor imrotate来获取该函数的源码原理眉山wap源码详细帮助信息。

       函数的函数函数基本调用格式为:B = imrotate(A, angle),其中A是源码原理商城源码提供待旋转的图像数据矩阵,angle则是函数函数旋转的角度,正值表示逆时针旋转,源码原理负值则表示顺时针旋转。函数函数旋转后的源码原理图像将被保存在矩阵B中。默认情况下,函数函数imrotate采用最近邻线性插值法处理旋转过程中可能出现的源码原理边缘处理,超出部分将填充黑色(值为0)。函数函数新纪元源码

       为了改变插值算法,源码原理你可以通过提供method参数,函数函数它可以是直通源码以下三种插值方式之一:'nearest'表示最邻近线性插值(Nearest-neighbor interpolation),'bilinear'代表双线性插值(Bilinear interpolation),而'bicubic'则表示双三次插值(Bicubic interpolation),它能提供更平滑的太极AI源码图像效果。

       此外,如果你想对输出图像的尺寸进行特定控制,可以使用bbox参数。'crop'选项会裁剪旋转后的图像,保持其尺寸与输入图像A相同。而'loose'模式则会确保输出图像足够大,能够包含所有旋转后不被裁剪的像素,可能会导致输出图像尺寸大于原始图像。

图像处理几何运算

       å›¾åƒçš„几何运算可以使得图像的几何形状发生变化,与点运算不同,几何运算可以看作像素在图像内移动过程,这个过程会改变图像物体对象之间的空间关系,本节就将针对matlab中图像处理几何运算进行介绍:

       å›¾åƒçš„插值

       å›¾åƒæ’值是指利用已知邻近像素点的灰度值来产生未知像素点的灰度值,使得原始图像具有更高的分辨率。

       interp2函数用于用于对图像进行插值,该函数的调用格式如下:

       J=interp2(X,Y,I,X1,Y1);

       X,Y表示原始像素值,X1,Y1插入新的像素,I表示原始图像,J表示插值后的图像

       ç¤ºä¾‹ï¼šå¯¹å›¾å½¢è¿›è¡Œæ’值

       ç¼–写对应的m文件如下:

        clear all;

        I=imread('cameraman.tif');

        subplot(2,2,1)

        imshow(I);

        title('原始图像');

        J1=interp2(double(I),2,'nearest');%%最邻近插值法%%

        J2=interp2(double(I),2,'spline'); %%三次样条插值%%

        J3=interp2(double(I),2,'linear'); %%线性插值%%

        subplot(2,2,2)

        imshow(uint8(J1));

        title('最邻近插值法');

        subplot(2,2,3)

        imshow(uint8(J2));

        title('三次样条插值法');

        subplot(2,2,4)

        imshow(uint8(J3));

        title('线性插值法');

       ç¨‹åºè¿è¡Œç»“果如下图:

       å›¾åƒçš„旋转

       imrotate函数用于实现图像的旋转,其调用格式如下:

       J=imrotate(I,angle,method,bbox);

       å…¶ä¸­I表示原始图像,angle表示旋转角度,method表示插值方法,bbox表示旋转后的显示方法

       ç¤ºä¾‹ï¼šå¯¹å›¾å½¢è¿›è¡Œæ—‹è½¬

       ç¼–写对应的m文件如下:

        clear all;

        I=imread('pout.tif');

        J=imrotate(I,,'bilinear');%%对图像旋转度,利用双线性插值法%%

        subplot(1,2,1)

        imshow(I);

        title('原始图像');

        subplot(1,2,2)

        imshow(J);

        title('旋转后的图像');

       ç¨‹åºè¿è¡Œç»“果如下图:

       å›¾åƒçš„平移

       å›¾åƒå¹³ç§»å˜æ¢åº”用的是直角坐标系的平移变换公式

       ç¤ºä¾‹ï¼šå¯¹å›¾åƒè¿›è¡Œå¹³ç§»

       ç¼–写对应m文件如下:

        clear all;

        I=imread('peppers.png');

        subplot(1,2,1)

        imshow(I);

        title('原始图像');

        J=double(I);

        J1=zeros(size(J));%%构造函数,像素默认为0%%

        J2=size(J1);

        X=;

        Y=;

        J3(X+1:J2(1),Y+1:J2(2),1:J2(3))=J(1:J2(1)-X,1:J2(2)-Y,1:J2(3));

        subplot(1,2,2)

        imshow(uint8(J3));

        title('平移后图像');

       ç¨‹åºè¿è¡ŒåŽç»“果如下图:

       å›¾åƒçš„缩放

       å›¾åƒçš„缩放就是将原始图像进行放大或者缩小,imresize函数用于实现对图像的缩放,其调用格式如下:

       J=imresize(I,K,method);

       I,J分别表示原始图像,缩放后图像,K表示缩放系数,method插值方法,可以去nearest最邻近插值法,bilinear双线性插值法,bicubic双立方插值法

       ç¤ºä¾‹ï¼šåˆ©ç”¨imresize函数对图像进行插值

       ç¼–写对应m文件如下:

        clear all;

        I=imread('office_5.jpg');

        subplot(2,2,1)

        imshow(I);

        title('原始图像');

        J1=imresize(I,4,'nearest');

        subplot(2,2,2)

        imshow(uint8(J1))

        title('最邻近插值法放大4倍后图像');

        J2=imresize(I,0.2,'bilinear');

        subplot(2,2,3)

        imshow(uint8(J1))

        title('双线性插值法缩小0.2倍后图像');

        J3=imresize(I,0.2,'bicubic');

        subplot(2,2,4)

        imshow(uint8(J3))

        title('双立方插值法缩小0.2倍后图像');

       ç¨‹åºè¿è¡Œç»“果如下图:

       å›¾åƒçš„裁剪

       å›¾åƒçš„裁剪是将我们不需要的部分进行删除,只保留我们感兴趣的部分,imcrop函数用于实现对图像的剪切,该函数调用格式如下:

        J=imcrop(I);表示对灰度图进行剪切

        J=imcrop(X,map);表示对索引图进行剪切

        J=imcrop(RGB);表示对真彩图进行剪切

       ç¤ºä¾‹ï¼šå¯¹ç´¢å¼•å›¾è¿›è¡Œå‰ªåˆ‡

        clear all

        [X,map]=imread('peppers.png');

        colormap(map);

        subplot(1,2,1)

        imshow(X,map);

        title('原始索引图');

        X2=imcrop(X,map,[ ]);%%指定剪切区域大小和位置%%

        subplot(1,2,2)

        imshow(X2);

        title('剪切后索引图');

       ç¨‹åºè¿è¡Œç»“果如下图:

       å›¾åƒçš„镜像

       é•œåƒç‰¹ç‚¹ä½¿å›¾åƒå·¦å³é¢ å€’或这上下颠倒,图像镜像分为水平镜像和垂直镜像,flipud函数用于图像进行左右翻转

       ç¤ºä¾‹ï¼šå¯¹å›¾åƒè¿›è¡Œé•œåƒå˜æ¢

       ç¼–写对应的m文件如下:

        clear all;

        I=imread('cameraman.tif');

        subplot(2,2,1)

        imshow(I);

        title('原始图像');

        h=size(double(I));

       %%水平镜像%%

        J1(1:h(1),1:h(2))=I(1:h(1),h(2):-1:1);

        subplot(2,2,2)

        imshow(uint8(J1));

        title('水平镜像后的图像');

       %%竖直镜像%%

        J2(1:h(1),1:h(2))=I(h(1):-1:1,1:h(2));

        subplot(2,2,3)

        imshow(uint8(J2));

        title('垂直镜像后的图像');

        J3(1:h(1),1:h(2))=I(h(1):-1:1,h(2):-1:1);

        subplot(2,2,4)

        imshow(uint8(J3));

        title('对角镜像后的图像');

       ç¨‹åºè¿è¡Œç»“果如下图: