matlab 最基礎的數位影像處理

來源:互聯網
上載者:User

這是上學期數位影像處理的作業,老師要我們比較dft,wht,dct種變換進行壓縮後的效果比較,鄙人熬了兩夜做了些小東西,為方便後人做的更好,也為了盡少周折,特上傳程式至此,程式品質很低,歡迎各位提出寶貴意見。

首先是圖片分割程式,有人用mat2cell之類的,因為cell概念還不是很清楚,我就用了很笨的方法做迴圈,將一個大的圖片處理後變成4維的數組,4維數組中前2維是圖片的橫縱左邊,後兩維是子圖片在大圖片的位置,由此實現圖片的分割。是不是很笨啊。

function sub_image=div_image(scr_image,SUBSIZE)% 功能:將scr_image按SUBSIZE*SUBSIZE大小分割% 輸入:scr_image:待處理的圖片,SUBSIZE子圖片大小% 輸出:sub_image:子圖片集合,p,q為序號% 注意:僅能處理二維圖片,即灰階級圖片% % Edit by lineter% QQ:542375845% Ningxia daxue% % 樣本:%% a=imread('jinbo.bmp');% a=rgb2gray(a);% b=div_image(a,16);% size(b)% % ans =% %     16    16    32    32% if(ndims(scr_image)==3)    scr_image=rgb2gray(scr_image);end[x,y]=size(scr_image);for p=1:round(x/SUBSIZE)    for q=1:round(y/SUBSIZE)        sub_image(:,:,p,q)= ...            scr_image(SUBSIZE*(p-1)+1:SUBSIZE*p,SUBSIZE*(q-1)+1:SUBSIZE*q);    endendif(mod(x,SUBSIZE)~=0 || mod(y,SUBSIZE)~=0)    disp('警告,圖片邊緣可能丟失!');end

很笨很笨的方法,有用內建函數實現分割的請告訴我,非常感謝。

對應的合并圖片方法如下:

function image=sum_image(div_image)% 功能:將scr_image合并成一張圖片% 輸入:scr_image:待處理的圖片集合% 輸出:sub_image:產生圖片% 注意:僅能處理二維圖片,即灰階級圖片% % Edit by lineter% QQ:542375845% Ningxia daxue% % 樣本:%% a=imread('jinbo.bmp');% a=rgb2gray(a);% b=div_image(a,16);% size(b)% % ans =% %     16    16    32    32% if(ndims(div_image)~=4)    disp('映像格式錯誤,不是映像集合');end[x,y,m,n]=size(div_image);if(x~=y || m~=n)    disp('映像大小不正確');endimage=[];for p=1:m    for q=1:m        image((x.*(p-1)+1):(x.*p),(x.*(q-1)+1):(x.*q)) = uint8( div_image(:,:,p,q));    endendimage=uint8(image);

這樣處理後就把圖片合并出來了,在這兩個函數中間就可以做些變換壓縮之類的,恢複後和原圖比較就可以知道壓縮效果的好壞了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.