国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

圖像的幾何運(yùn)算

原圖:
數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移
讀取原圖(這里我的圖片名字是atm.png):

% 先讀入圖像
I = imread('atm.png');
% imshow(I);

1. 旋轉(zhuǎn) (imrotate)

我們先說原理,圖像旋轉(zhuǎn)的本質(zhì)是向量的旋轉(zhuǎn)。

矩陣乘法的實(shí)質(zhì)是進(jìn)行線性變換,因此對(duì)一個(gè)向量進(jìn)行旋轉(zhuǎn)操作也可以通過矩陣和向量相乘的方式進(jìn)行。

因?yàn)閳D像都是通過二維矩陣存放的(單通道),所以對(duì)圖像進(jìn)行旋轉(zhuǎn)時(shí)要先設(shè)定一個(gè)像素作為旋轉(zhuǎn)軸,然后其他的像素位置可以看作從旋轉(zhuǎn)軸出發(fā)的向量。

假設(shè)有二維向量 v = [ x ; y ] v = [x ; y] v=[x;y] ,若要進(jìn)行逆時(shí)針旋轉(zhuǎn)角度 a a a 。則旋轉(zhuǎn)矩陣R為 [ c o s ( a ) ? s i n ( a ) s i n ( a ) c o s ( a ) ] \begin{bmatrix} cos(a)& -sin(a)\\ sin(a) & cos(a) \end{bmatrix} [cos(a)sin(a)??sin(a)cos(a)?]旋轉(zhuǎn)后的向量 v 2 = R ? v v2 = R * v v2=R?v 。在正式處理過程中可以這么表示,原像素位置記為 p p p ,中心點(diǎn)記為 c c c ,旋轉(zhuǎn)后像素位置記為 p p pp pp
則有 ( p p ? c ) = R ? ( p ? c ) (pp - c) = R*(p - c) (pp?c)=R?(p?c) 。

如果通過原圖的點(diǎn)來計(jì)算新圖的點(diǎn),那么新圖的點(diǎn)可能會(huì)出現(xiàn)漏算的。

這里我們進(jìn)行逆向求點(diǎn),通過新圖的點(diǎn),來找舊圖的點(diǎn),這樣就不會(huì)漏算了。

這里我設(shè)函數(shù)名為imrotate_test.m

% 進(jìn)行旋轉(zhuǎn)
% I是圖像,angle是角度
function J = imrotate_test(I,angle)
% 首先獲得高和寬,色彩的層數(shù)
[height, width, color] = size(I);
angle = angle/180*pi;
R=[cos(angle),-sin(angle);sin(angle),cos(angle)];%旋轉(zhuǎn)矩陣
R=R';%求出旋轉(zhuǎn)矩陣的逆矩陣

c1=[height;width]/2;%原圖中心
%計(jì)算顯示完整圖像需要的畫布大小
height2=floor(width*sin(angle)+height*cos(angle))+1;
width2=floor(width*cos(angle)+height*sin(angle))+1;
c2=[height2,width2]/2;%求新畫布中點(diǎn)

%初始化目標(biāo)畫布
J=uint8(ones(height2,width2,3)*128);
for k = 1:color
    for i = 1:height2
        for j = 1:width2
            p=[i;j];%遍歷新圖像像素點(diǎn)
            pp=round(R*(p-c2)+c1);%計(jì)算在原來圖像中的位置
            %逆向進(jìn)行像素查找
            if(pp(1)>=1&&pp(1)<=height&&pp(2)>=1&&pp(2)<=width)
                J(i,j,k)=I(pp(1),pp(2),k);
            end
        end
    end
end
%顯示圖像
figure;
imshow(J);

代碼:

% 自帶的函數(shù)
% J1 = imrotate(I,45);
J1 = imrotate_test(I,45); % 進(jìn)行旋轉(zhuǎn)

運(yùn)行結(jié)果:

數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移

2. 縮放(imresize)

這個(gè)很好理解就不解釋了。

這里我用到逆向求點(diǎn),通過新圖找舊圖的點(diǎn)

這里我設(shè)函數(shù)名為imresize_test.m

% 進(jìn)行放大縮小
% I:圖像 ,r:比例
function J = imresize_test(I,r)
% 首先獲得高和寬,色彩的層數(shù)
[height, width, color] = size(I);
% 新的圖層
height2=floor(height*r)+1;
width2=floor(width*r)+1;

%初始化目標(biāo)畫布
J=uint8(ones(height2,width2,3)*128);
for k = 1:color
    for i = 1:height2
        for j = 1:width2
            p=[i;j];%遍歷舊圖像像素點(diǎn)
            pp=round(p/r);%計(jì)算在原來圖像中的位置
            %這里仍然使用round函數(shù),但結(jié)果會(huì)比方案一好得多
            %逆向進(jìn)行像素查找
            if(pp(1)>=1&&pp(1)<=height&&pp(2)>=1&&pp(2)<=width)
                J(i,j,k)=I(pp(1),pp(2),k);
            end
        end
    end
end

%顯示圖像
figure;
imshow(J);

代碼:

% 自帶函數(shù)
% J2 = imresize(I,1/3);
J2 = imresize_test(I,1/3);

運(yùn)行結(jié)果:

數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移

3. 裁剪 (imcrop)

直接求點(diǎn),直接上代碼!??!(參數(shù)與自帶的函數(shù)不同)

這里我設(shè)函數(shù)名為imcrop_test.m

% 進(jìn)行裁剪
% w:水平方向的兩個(gè)值,h:豎直方向的兩個(gè)值
function J = imcrop_test(I,w,h)

% 首先獲得高和寬,色彩的層數(shù)
[height, width, color] = size(I);
if w(1)>w(2)
    a = w(2);
    w(2) = w(1);
    w(1) = a;
end
if h(1)>h(2)
    a = h(2);
    h(2) = h(1);
    h(1) = a;
end
if w(2)>width||h(2)>height||w(1)<=0||h(1)<=0
    return
end
% 新的圖層
height2=h(2)-h(1);
width2=w(2)-w(1);

%初始化目標(biāo)畫布
J=uint8(ones(height2,width2,3)*128);
for k = 1:color
    for i = 1:height2
        for j = 1:width2
            pp=[i+h(1);j+w(1)];
            J(i,j,k)=I(pp(1),pp(2),k);
        end
    end
end

%顯示圖像
figure;
imshow(J);

代碼:

% 自帶函數(shù)
% J3 = imcrop(I,[95,80,300,300]); % 略有不同,參數(shù):[左上角坐標(biāo),兩個(gè)截取長度]
J3 = imcrop_test(I,[95,398],[80,379]);

運(yùn)行結(jié)果:
數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移

4. 鏡像變換(flip,flipdim也可以)

水平變換,就是左右點(diǎn)關(guān)于中線交換

這里我設(shè)函數(shù)名為flip_test.m

% I是圖像
% a是選擇的變化 1是水平變換 2是垂直變換 3是對(duì)角變換
function J = flip_test(I,a)
% 首先獲得高和寬,色彩的層數(shù)
[height, width, color] = size(I);
%初始化目標(biāo)畫布
J=uint8(ones(height,width,color)*128);
if a==1 % 水平
    for k = 1:color
        for i = 1:height
            for j = 1:width
                pp=round(p/r);%計(jì)算在原來圖像中的位置
                %這里仍然使用round函數(shù),但結(jié)果會(huì)比方案一好得多
                %逆向進(jìn)行像素查找
                if(pp(1)>=1&&pp(1)<=height&&pp(2)>=1&&pp(2)<=width)
                    J(i,j,k)=I(pp(1),pp(2),k);
            end
            end
        end
    end
elseif a==2 % 垂直
    for k = 1:color
        for i = 1:height
            for j = 1:width
            p=[i;j];%遍歷新圖像像素點(diǎn)
            J(height-i+1,j,k)=I(p(1),p(2),k);
            end
        end
    end
elseif a==3 % 對(duì)角
    for k = 1:color
        for i = 1:height
            for j = 1:width
            p=[i;j];%遍歷新圖像像素點(diǎn)
            J(height-i+1,width-j+1,k)=I(p(1),p(2),k);
            end
        end
    end
else
    disp('你的輸入錯(cuò)誤');
    return
end

%顯示圖像
figure;
imshow(J);
end

代碼:

% 自帶的函數(shù)
% J4 = flip(I,1);% 水平變換
% J5 = flip(I,2);% 垂直變換
% 對(duì)角變換我沒有找到,但是直接變換兩次不就是對(duì)角變換了嘛
J4 = flip_test(I,1);
title('水平變換');
J5 = flip_test(I,2);
title('垂直變換');
J6 = flip_test(I,3);
title('對(duì)角變換');

運(yùn)行結(jié)果:

數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移
數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移
數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移

5. 平移

這里我設(shè)函數(shù)名為translation_test.m

% I為處理圖像,x是一個(gè)數(shù)組,第一個(gè)數(shù)為右移的長度,第二個(gè)為下移的長度
function J = translation_test(I,x)
% 首先獲得高和寬,色彩的層數(shù)
[height, width, color] = size(I);
%初始化目標(biāo)畫布
J=uint8(ones(height,width,color)*128);
for k = 1:color
    for i = 1:height
        for j = 1:width
            p=[i;j];%遍歷舊圖像像素點(diǎn)
            pp=[i-x(1);j-x(2)]; %計(jì)算在原來圖像中的位置
            %這里仍然使用round函數(shù),但結(jié)果會(huì)比方案一好得多
            %逆向進(jìn)行像素查找
            if(pp(1)>=1&&pp(1)<=height&&pp(2)>=1&&pp(2)<=width)
                J(i,j,k)=I(pp(1),pp(2),k);
            end
        end
    end
end

%顯示圖像
figure;
imshow(J);

代碼:

% 通過一些自帶的函數(shù),可以實(shí)現(xiàn)平移
%translate(SE, [y x])在結(jié)構(gòu)元素SE上進(jìn)行y和x方向的位移 正數(shù)對(duì)應(yīng)右移和下移
% se = translate(strel(1),[100 80]);
% J7 = imdilate(I,se);%利用膨脹函數(shù)平移圖像
J7 = translation_test(I,[-50,-100]);

運(yùn)行結(jié)果:

數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移


數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移
創(chuàng)作不易,如果對(duì)你有幫助,求求你給我個(gè)贊!??!
點(diǎn)贊 + 收藏 + 關(guān)注?。?!
如有錯(cuò)誤與建議,望告知?。。。▽⒂谙缕恼赂?br> 請(qǐng)多多關(guān)注我?。?!謝謝!?。?/strong>文章來源地址http://www.zghlxwxcb.cn/news/detail-465366.html

到了這里,關(guān)于數(shù)字圖像處理 matlab圖像的幾何運(yùn)算 實(shí)驗(yàn)三 旋轉(zhuǎn) 縮放 裁剪 鏡像變換 平移的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)字圖像處理】實(shí)驗(yàn)三 圖像分割(MATLAB實(shí)現(xiàn))

    【數(shù)字圖像處理】實(shí)驗(yàn)三 圖像分割(MATLAB實(shí)現(xiàn))

    目錄 一、實(shí)驗(yàn)意義及目的 二、實(shí)驗(yàn)內(nèi)容 三、Matlab 相關(guān)函數(shù)介紹 四、算法原理 五、參考代碼及擴(kuò)展代碼流程圖 (1)參考代碼流程圖 (2)擴(kuò)展代碼流程圖 六、參考代碼 七、實(shí)驗(yàn)要求 (1)嘗試不同的閾值選擇方法,實(shí)現(xiàn)灰度圖像二值化 (2)變換參數(shù)實(shí)現(xiàn)形態(tài)學(xué)濾波,查看濾波

    2024年02月05日
    瀏覽(29)
  • 【數(shù)字圖像處理】實(shí)驗(yàn)(2)——圖像增強(qiáng)(MATLAB實(shí)現(xiàn))

    【數(shù)字圖像處理】實(shí)驗(yàn)(2)——圖像增強(qiáng)(MATLAB實(shí)現(xiàn))

    (1)進(jìn)一步掌握?qǐng)D像處理工具M(jìn)atlab,熟悉基于Matlab的圖像處理函數(shù)。 (2)掌握各種圖像增強(qiáng)方法。 1.打開一幅彩色圖像Image1,使用Matlab圖像處理函數(shù),對(duì)其進(jìn)行下列變換: (1)將Image1灰度化為gray,統(tǒng)計(jì)并顯示其灰度直方圖; (2)對(duì)gray進(jìn)行分段線性變換; (3)對(duì)gray進(jìn)行

    2023年04月23日
    瀏覽(30)
  • 數(shù)字圖像處理之matlab實(shí)驗(yàn)(五):形態(tài)學(xué)圖像處理

    數(shù)字圖像處理之matlab實(shí)驗(yàn)(五):形態(tài)學(xué)圖像處理

    常見的形態(tài)學(xué)處理包括腐蝕、膨脹、開運(yùn)算、閉運(yùn)算。不同的操作有不同的作用,同樣的操作在不同類型的圖片上也有不同效果,具體效果如下表格所示。要求熟練掌握對(duì)二值圖像的形態(tài)學(xué)處理。 不同操作對(duì)不同類型圖像處理效果 一、對(duì)二值圖像進(jìn)行處理 1、結(jié)構(gòu)元素 在開

    2024年02月04日
    瀏覽(27)
  • (數(shù)字圖像處理MATLAB+Python)第九章圖像形態(tài)學(xué)運(yùn)算-第三節(jié):二值圖像的形態(tài)學(xué)處理

    (數(shù)字圖像處理MATLAB+Python)第九章圖像形態(tài)學(xué)運(yùn)算-第三節(jié):二值圖像的形態(tài)學(xué)處理

    形態(tài)濾波 :是一種在數(shù)字圖像處理中常用的圖像處理技術(shù),用于改善圖像的質(zhì)量、提取圖像的特定特征或去除圖像中的噪聲。形態(tài)濾波主要基于形態(tài)學(xué)運(yùn)算,通過結(jié)構(gòu)元素(也稱為模板)對(duì)圖像進(jìn)行局部區(qū)域的操作,從而改變圖像的形狀和結(jié)構(gòu)。選擇不同形狀(如各向同性的

    2024年02月08日
    瀏覽(99)
  • 【數(shù)字圖像處理】實(shí)驗(yàn)(3)——圖像綜合應(yīng)用:皮膚美化(MATLAB實(shí)現(xiàn))

    【數(shù)字圖像處理】實(shí)驗(yàn)(3)——圖像綜合應(yīng)用:皮膚美化(MATLAB實(shí)現(xiàn))

    (1)了解和掌握?qǐng)D像處理工具 Matlab ,熟悉基于 Matlab 的圖像處理函數(shù),并為下一步編程進(jìn)行圖像處理打下基礎(chǔ)。 (2)理解色彩的概念,掌握?qǐng)D像代數(shù)運(yùn)算,幾何變換方法。 1.灰度線性變換就是將圖像中所有點(diǎn)的灰度按照線性灰度變換函數(shù)進(jìn)行變換。 2.直方圖均衡化通過點(diǎn)運(yùn)

    2024年02月05日
    瀏覽(36)
  • 數(shù)字圖像處理---低高通濾波實(shí)驗(yàn)(MATLAB實(shí)現(xiàn))

    數(shù)字圖像處理---低高通濾波實(shí)驗(yàn)(MATLAB實(shí)現(xiàn))

    1. 了解圖像傅里葉變換的意義和手段; 2. 熟悉理想低通濾波器、巴特沃斯低通濾波器、高斯低通濾波器的基本原理和性質(zhì); 3. 熟悉理想高通濾波器、巴特沃斯高通濾波器、高斯高通濾波器的基本原理和性質(zhì); 4. 掌握MATLAB編程實(shí)現(xiàn)數(shù)字圖像的低高通濾波器的變換,并分析各參

    2024年02月05日
    瀏覽(28)
  • MATLAB【數(shù)字圖像處理】 實(shí)驗(yàn)一:圖像處理基本操作(平移、放大、縮小、旋轉(zhuǎn)、插值)

    MATLAB【數(shù)字圖像處理】 實(shí)驗(yàn)一:圖像處理基本操作(平移、放大、縮小、旋轉(zhuǎn)、插值)

    1、熟悉并掌握MATLAB工具的使用;? 2、實(shí)現(xiàn)圖像的讀取、顯示、存儲(chǔ)、平移、鏡像、放大、縮小及旋轉(zhuǎn)操作; 3、掌握常用的插值方法,并了解其優(yōu)缺點(diǎn)。 Matlab 2020B 1、讀入一幅RGB圖像,變換為灰度圖像和二值圖像,并在同一個(gè)窗口內(nèi)分別顯示RGB圖像和灰度圖像,注上文字標(biāo)

    2024年02月06日
    瀏覽(24)
  • 數(shù)字圖像處理之matlab實(shí)驗(yàn)(三):空間濾波器

    數(shù)字圖像處理之matlab實(shí)驗(yàn)(三):空間濾波器

    空間濾波,就是在原圖像上,用一個(gè)固定尺寸的模板去做卷積運(yùn)算,得到的新圖像就是濾波結(jié)果。濾波,就是過濾某種信號(hào)的意思。過濾哪種信號(hào)取決于模板設(shè)計(jì),如果是銳化模板,處理后就保留高頻信號(hào),如果是平滑模板,處理后就保留低頻信號(hào)。 (1)模板運(yùn)算 圖像處理

    2024年04月28日
    瀏覽(30)
  • 數(shù)字圖像處理:亮度對(duì)比度-幾何變換-噪聲處理

    數(shù)字圖像處理:亮度對(duì)比度-幾何變換-噪聲處理

    亮度與對(duì)比度轉(zhuǎn)換 圖像變換可分為以下兩種: 點(diǎn)算子:基于像素變換,在這一類圖像變換中,僅僅根據(jù)輸入像素值計(jì)算相應(yīng)的輸出像素值 鄰域算子:基于圖像區(qū)域進(jìn)行變換 兩種常用的點(diǎn)算子是用常數(shù)對(duì)點(diǎn)的像素值進(jìn)行乘法或加法運(yùn)算,可以表示為: g ( i , j ) = α ? f ( i ,

    2024年02月10日
    瀏覽(31)
  • MATLAB圖像處理之幾何變換——平移與旋轉(zhuǎn)

    MATLAB圖像處理之幾何變換——平移與旋轉(zhuǎn)

    可以發(fā)現(xiàn),原圖在原坐標(biāo)基礎(chǔ)上向X、Y方向分別平移了50和100個(gè)單位。但相應(yīng)平移的部分也被遮擋了,顯然這不符合一些場景的應(yīng)用需求。 為此,MATLAB還提供了參數(shù)設(shè)置。在imtranslate函數(shù)中設(shè)置’OutputView’參數(shù)為’full’,即可防止遮擋平移的圖像,如下圖所示。 MATLAB在進(jìn)行圖

    2024年02月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包