1. 程式人生 > >matlab 影象幾何變換 平移、旋轉、縮放

matlab 影象幾何變換 平移、旋轉、縮放

1、縮放

該函式用於對影象做縮放處理。在matlab的命令視窗中輸入doc imresize或者help imresize即可獲得該函式的幫助資訊

呼叫格式

B = imresize(A, m)

返回的影象B的長寬是影象A的長寬的m倍,即縮放影象。 m大於1,則放大影象; m小於1,縮小影象。

B = imresize(A, [numrows numcols])

numrows和numcols分別指定目標影象的高度和寬度。顯而易見,由於這種格式允許影象縮放後長寬比例和源影象長寬比例不相同,因此所產生的影象有可能發生畸變。

[Y newmap] = imresize(X, map, scale)

[...] = imresize(..., method)

method引數用於指定在改變影象尺寸時所使用的演算法,可以為以下幾種:

'nearest': 這個引數也是預設的,即改變影象尺寸時採用最近鄰插值演算法;

'bilinear':採用雙線性插值演算法;

'bicubic': 採用雙三次插值演算法,在R2013a版本里,預設為這種演算法,所以不同版本可能有不同的預設引數,使用之前建議使用命令help imresize獲得幫助資訊,以幫助資訊為準;

2、旋轉

函式功能:對影象進行旋轉操作。

呼叫格式:

B = imrotate(A,angle)

將影象A(影象的資料矩陣)繞影象的中心點旋轉angle度,正數表示逆時針旋轉,負數表示順時針旋轉。返回旋轉後的影象矩陣。以這種格式呼叫該函式,該函式預設採用最近鄰線性插值(Nearest-neighbor interpolation)。旋轉後的影象超出的部分填充0(黑色)。

B = imrotate(A,angle,method)

使用method引數可以改變插值演算法,method引數可以為下面這三個值:

{'nearest'}:最鄰近線性插值(Nearest-neighborinterpolation)

'bilinear':雙線性插值(Bilinearinterpolation)

'bicubic':雙三次插值(或叫做雙立方插值)(Bicubicinterpolation)

B = imrotate(A,angle,method,bbox)

bbox引數用於指定輸出影象屬性:

'crop':通過對旋轉後的影象B進行裁剪,保持旋轉後輸出影象B的尺寸和輸入影象A的尺寸一樣。

{'loose'}:使輸出影象足夠大,以保證源影象旋轉後超出影象尺寸範圍的畫素值沒有丟失。一般上這種格式產生的影象的尺寸都要大於源影象的尺寸。

3、Reshape函式

    函式功能:重新調整矩陣的行數、列數、維數。

呼叫格式:

B = reshape(A,m,n)

返回一個m*n的矩陣B, B中元素是按列從A中得到的。如果A中元素個數沒有m*n個,則會引發錯誤。

B = reshape(A,m,n,p,...)和B =reshape(A,[m n p ...])

返回一個和A具有相同元素的n維陣列。但B的尺寸是m*n*p*...,m*n*p*...必須和prod(size(A))相等。即A和B元素個數相等。

B = reshape(A,...,[ ],...)

計算由佔位符[ ]所表示的尺寸的長度,這樣維度的乘積等價於prod(size(A))。而prod(size(A))的值必須能被的指定維數的乘積所整除。在這裡面佔位符[ ] 只能使用一次。

B = reshape(A,siz)

返回一個和A元素相同的n維陣列,但是由向量siz來決定重構陣列維數的大小,prod(siz)的數量值必須和prod(size(A))的保持一致。

4、平移

matlab例項:

clc;clear;close all;

img1=imread('1.jpg');
img1=rgb2gray(img1);
figure,imshow(img1);
imwrite(img1,'a1.jpg');
%%%%%%平移 
se=translate(strel(1),[20 20]);
img2=imdilate(img1,se);
figure,imshow(img2);
imwrite(img2,'a2.jpg');
%%%%%%旋轉
img3=imrotate(img1,90);
figure,imshow(img3);
imwrite(img3,'a3.jpg');
% %%%%%縮放
img4=imresize(img1,2);
figure,imshow(img4);
imwrite(img4,'a4.jpg');

相關推薦

matlab 影象幾何變換 平移旋轉

1、縮放 該函式用於對影象做縮放處理。在matlab的命令視窗中輸入doc imresize或者help imresize即可獲得該函式的幫助資訊 呼叫格式 B = imresize(A, m) 返回的影象B的長寬是影象A的長寬的m倍,即縮放影象。 m大於1,則放大影象;

SVG 的平移旋轉

SVG中的平移、旋轉和縮放在不同的引數條件下,體現出不同的效果: 1、如果直接用x、y指定了圖形的座標(在我的理解該座標實際是圖形相對座標,如果沒有通過transform屬性設定座標平移,該座標是相對畫布起始位置座標,如果設定了座標平移則為相對平移後坐標位置的偏移),所有的

Sketchup用ruby進行二次開發--利用Transformation實現Move工具(平移旋轉

 在Sketchup中,move工具使用的非常廣泛,,可以移動、拉伸和複製幾何體,也可以用來旋轉元件。舉一個簡單地例子。 我們要做一個建築物的尖頂,如下圖所示,就是使用move工具實現的。                   接下來我們就要學習如何使用ruby實現這樣的功能

canvas和白鷺引擎中平移旋轉

都是 canvas 引擎 偏移 坐標 這一 text sla 偏移量 canvas中的 translate() 和白鷺引擎中的 .x 或者 .y 所導致的平移效果並不是移動 目標元素,而是移動目標元素父親所在的坐標系。 例如 bgg.translate(100,100)

矩陣運算——平移旋轉

平時開發程式,免不了要對影象做各種變換處理。有的時候變換可能比較複雜,比如平移之後又旋轉,旋轉之後又平移,又縮放。 直接用公式計算,不但複雜,而且效率低下。這時可以藉助變換矩陣和矩陣乘法,將多個變換合成一個。 最後只要用一個矩陣對每個點做一次處理就可以得到想要的結果。

[CAAnimation核心動畫練習一]普通的平移旋轉

#import "ViewController.h" @interface ViewController () { @private CALayer* _calyer; } @end @implementation ViewController - (vo

Android matrix偏移(平移),旋轉,傾斜的原理

第一部分 Matrix的數學原理 在Android中,如果你用Matrix進行過影象處理,那麼一定知道Matrix這個類。Android中的Matrix是一個3 x 3的矩陣,其內容如下: Matrix的對影象的處理可分為四類基本變換: Translate   

OpenCV2:影象幾何變換,平移映象旋轉(1)

影象的幾何變換是在不改變影象內容的前提下對影象畫素的進行空間幾何變換,主要包括了影象的平移變換、映象變換、縮放和旋轉等。本文首先介紹了影象幾何變換的一些基本概念,然後再OpenCV2下實現了影象的平移變換、映象變換、縮放以及旋轉,最後介紹幾何的組合變換(平移+縮放+旋轉)。

OpenCV2:影象幾何變換,平移映象旋轉(2)

在OpenCV2:影象的幾何變換,平移、映象、縮放、旋轉(1)主要介紹了影象變換中的向前對映、向後對映、處理變換過程中浮點座標畫素值的插值演算法,並且基於OpenCV2實現了兩個簡單的幾何變換:平移和映象變換。本文主要稍微複雜點的兩個幾何變換:縮放和旋轉。 1.影象縮放

MFC空間幾何變換影象平移映象旋轉

一. 影象平移        前一篇文章講述了影象點運算(基於畫素的影象變換),這篇文章講述的是影象幾何變換:在不改變影象內容的情況下對影象畫素進行空間幾何變換的處理方式。         點運算對單幅影象做處理,不改變畫素的空間位置;代數運算對多幅影象做處理,也不

計算機圖形與OpenGL學習五(二維幾何變換1.平移旋轉)

二維幾何變換(平移、旋轉、縮放)本章涉及數學變換比較多,程式碼是次要的,數學理論可自己推導一下。【二維平移】通過將二維量加到一個點的座標上來生成一個新的座標位置,可以實現一次平移。將平移距離加到原始座標上獲得一個新的座標,實現一個二維位置的平移。為平移向量,使用列向量來表示各

影象幾何變換旋轉)中的插值演算法

轉載地址:http://blog.itpub.net/10752043/viewspace-996696/ 此篇文章講了在影象變換中基本的插值演算法(最臨近、雙線性和 三次卷積法) 實踐已證明,插值演算法對於縮放比例較小的情況是完全可以接受的,令人信服的。一般的,

Matlab 圖像平移旋轉鏡像

more msh ret 結果 src end 初始 求解 http 今天學習了用Matlab實現對圖像的基本操作。在Matlab中,圖像是按照二維矩陣的形式表示的。所以對圖像的操作就是對矩陣的操作。 對圖像進行縮放、平移、旋轉,都可以轉化為矩陣的運算。 關於變換矩陣的構

vtkPolyData 的空間變換平移旋轉

vtkPolydata的空間變化主要基於vtkTransform與vtkTransformPolyDataFilter兩個類實現,示例程式碼如下: vtkSmartPointer<vtkTr

使用Python手動實現影象平移旋轉水平映象等

原部落格 一、影象平移 二、影象水平映象 三、影象垂直映象 四、影象縮放 五、影象旋轉 Python程式碼實現: impo

二維圖形學的變換-平移旋轉 OpenGL

這裡實現的是多點畫多邊形,然後把這個多邊形進行二維的變換。 首先,多點畫多邊形,為了方便起見,我直接呼叫了Opengl的庫函式。其次,就是如何進行多邊形的二維變換。在這裡我有兩種方法。第一種是直接根據數學三角等公式推斷得到結果。第二種方法是用矩陣相乘的方法。 先講第一種:

Python實現影象平移旋轉水平映象等

一、影象平移 二、影象水平映象 三、影象垂直映象 四、影象縮放 五、影象旋轉 Python程式碼實現: import cv2 import math import n

基本動畫復合動畫設置 平移旋轉透明度 編碼實現 xml實現

sca ons new rpo 頂點 進行 clas imageview abs public class VAActivity extends Activity { private ImageView iv_animation; private Tex

屬性動畫---平移旋轉漸變組合

佈局—5個按鈕,一個ImageView 平移 private void transAnimator() { ObjectAnimator objectAnimator = new ObjectAnimator().ofFloat(image,

三維空間中的幾何變換-平移旋轉

https://blog.csdn.net/swety_gxy/article/details/73087848 前言 前段時間由於專案需要,深入學習了下圖形幾何變換,主要是繞任意軸旋轉部分(其他的已有一定基礎),現記錄學習筆記。 文章內容部分引用並參考了下面的部落格: http: