matlab練習程式(RGB2CMY、CMY2RGB)

  老是搞灰階映像我都不好意思了,所以現在開始看看彩色映像方面的東西。首先就是彩色空間了。clear all;close all;clc;img=imread('lena_color.jpg');img=mat2gray(img); %任意區間映射到[0,1];[m n dim]=size(img);%%映像的RGBR=img(:,:,1);G=img(:,:,2);B=img(:,:,3);%%映像的RGB2CMYC=1-R;M=1-G;Y=1-B;%%映像的CMY2RGBR=1-C;G=1

matlab練習程式(Canny邊緣檢測)

  我可沒直接調用系統函數,要是那樣就太水了。其實我的matlab代碼很容易就能翻譯成c/c++的。  canny邊緣檢測一共四個部分:  1.對原映像高斯平滑  2.對高斯平滑後的映像進行sobel邊緣檢測。這裡需要求橫的和豎的還有聯合的,所以一共三個需要sobel邊緣檢測映像。  3.對聯合的sobel檢測映像進行非極大抑制  4.串連邊緣點並進行滯後閾值處理。下面是代碼:main.mclear all;close all;clc;img=imread('lena.jpg');imshow(

matlab練習程式(映像放大/縮小,雙線性插值)

  半年前寫過matlab最鄰近插值的映像縮放,沒怎麼考慮邊界問題。更早之前用Opencv寫過雙線性插值映像放大,不過寫的比較混亂。所以這裡用matlab重新再清楚的寫一遍。close all;clear all;clc;m=1.8; %放大或縮小的高度n=2.3; %放大或縮小的寬度img=imread('lena.jpg');imshow(img);[h w]=size(img);imgn=zeros(h*m,w*n);rot=[m 0 0

matlab練習程式(最終腐蝕)

所謂的最終腐蝕並不是把映像不斷腐蝕直到一片黑為止,那樣還有什麼意思呢。最終腐蝕的意思是連續腐蝕過程中連通子領域消失前所有剩餘部分的並。看有一個連通地區:那麼最終腐蝕就是把映像不斷腐蝕到只剩圓環最中間的白色地區為止。如下:所以一般最終腐蝕之後,如果再腐蝕一下,那麼映像就全沒了。最終腐蝕的通常演算法會先對原映像使用距離變換,然後求地區極大值。不過這種方法怎麼說呢,速度倒是快,不過我實驗了很多次,求得的結果很不穩定。所以我就自己開發了一個演算法,雖然有些慢,不過很穩定。1.首先對原映像進行連通地區標記

matlab練習程式(積分圖)

計算Haar特徵時有用到這個。wiki介紹的非常好,我可恥的轉了:積分圖的每一點(x, y)的值是原圖中對應位置的左上方地區的所有值得和:而且,積分圖可以只遍曆一次映像即可有效計算出來,因為積分圖每一點的(x, y)值是:一旦積分圖計算完畢,對任意矩形地區的和的計算就可以在常數時間內完成。如中,陰影矩形地區的值:clear all;close all;clc;img=double(imread('lena.jpg'));[m

matlab練習程式(條件膨脹)

顧名思義,條件膨脹是帶有限定條件的膨脹。限定條件通常有兩個。1.膨脹始終在原創組合內。如:原創組合映像:集合內部的子集映像:如果對後一個圖進行規則1的條件膨脹,那麼最後的結果就會得到第一幅圖。所以這裡第一幅圖即是原創組合映像又是最終條件膨脹映像。2.膨脹之後各自粒子互不串連。如:原圖:按規則2條件膨脹需首先標記連通地區:然後再進行互補侵犯的膨脹:根據具體應用環境,可以使用單一的條件或兩個條件同時使用。分水嶺分割的最後築壩那一步就是兩個條件同時使用到了。單獨規則1的matlab代碼:clear

matlab練習程式(映像Haar小波變換)

關於小波變換我只是有一個很樸素了理解。不過小波變換可以和傅裡葉變換結合起來理解。傅裡葉變換是用一系列不同頻率的正餘弦函數去分解原函數,變換後得到是原函數在正餘弦不同頻率下的係數。小波變換使用一系列的不同尺度的小波去分解原函數,變換後得到的是原函數在不同尺度小波下的係數。不同的小波通過平移與尺度變換分解,平移是為了得到原函數的時間特性,尺度變換是為了得到原函數的頻率特性。小波變換步驟:1.把小波w(t)和原函數f(t)的開始部分進行比較,計算係數C。係數C表示該部分函數與小波的相似程度。2.把小波

matlab練習程式(構建Hessian矩陣)

很多演算法都用到了這個矩陣,比如Hessian affine region detector、SURF,雖然這些演算法我還沒有完全搞透,不過那都是後話,先把這個矩陣搞出來再說,學習是不斷迭代的過程。整個矩陣的形成主要由四部分公式決定:g(x,y)就是高斯函數了,沒啥可說的:對高斯函數的x和y分別求二階偏導:求出的模板對原圖進行卷積:卷積後的值構成Hessian矩陣:所以這裡的H是相當於原映像每一個像素都能求出一個Hessian矩陣。matlab代碼如下:clear all;close

多媒體指令(映像均值模糊)

均值模糊原理很容易了,就不解釋了。我測了一下,使用彙編的代碼處理時間為1-2ms左右。cpp代碼處理時間為3-4ms左右。這裡只給出關鍵代碼,其餘代碼見這裡。void asmMeanFilter(BitmapData *data){ UINT Height=data->Height; UINT s_Height=Height-1; UINT Width=data->Width; UINT s_Width=Width-1; Pix*

matlab練習程式(共生矩陣)

紋理描述的共生矩陣方法是基於在紋理中某一灰階級結構重複出現的情況;這個結構在精細紋理中隨著距離而快速的變化,而在粗糙紋理中則緩慢的變化。假設待分析在精細紋理映像的一部分是一個M*N的矩形視窗。某一灰階級結構的出現情況可以由相對的頻率的矩陣來描述,他描繪了具有灰階級a,b的兩個像素,在方向Φ上間隔距離為d,以多大的頻率出現在視窗中。共生矩陣求取方法:這裡有兩種定義,書上的是第一種,也就是對稱矩陣的定義,如下:     我程式用的是非對稱的矩陣的定義,如下:    哦,我想這一大堆公式是不那麼容易看

matlab練習程式(RGB2YUV、YUV2RGB)

  這裡的變換公式是類比領域的公式,這裡雖然是數位影像,不過也可以這樣寫,YCbCr採樣另外的公式。clear all;close all;clc;img=imread('lena_color.jpg');img=mat2gray(img); %任意區間映射到[0,1];[m n dim]=size(img);imshow(img);%%映像的RGBR=img(:,:,1);G=img(:,:,2);B=img(:,:,3);%%RGB2YUVY=zeros(m,n);

matlab練習程式(LBP,局部二值模型)

一種映像特徵的提取演算法。演算法步驟:1.用3*3的模板對映像每個像素進行處理,比較當前像素和周圍像素的大小,將大於當前像素的置1,小於的置0。2.對這周圍八個像素進行編碼,這八個0和1正好是可以組成一個byte數,然後按一定的規則群組成這個無符號數。3.把這個數賦值給當前像素。4.通常對處理後的映像進列區域劃分,比如分成4*4

matlab練習程式(RGB2HSV、HSV2RGB)

  色相飽和度明度和三原色的相互轉換clear all;close all;clc;img=imread('lena_color.jpg');img=mat2gray(img); %任意區間映射到[0,1];[m n dim]=size(img);imshow(img);%%映像的RGBR=img(:,:,1);G=img(:,:,2);B=img(:,:,3);%%映像的RGB2HSVH=zeros(m,n); %色相角S=zeros(m,n); %飽和度V=zeros(m,n);

matlab練習程式(Marr-Hildreth邊緣檢測)

  方法是先用LoG運算元進行濾波,在對映像的過零點進行檢測。clear all;close all;clc;%產生LoG運算元(Laplacian of Gaussian)m=11;n=11;sigma=1.4;w=zeros(m,n);h_m=(m-1)/2;h_n=(n-1)/2;for i=1:m for j=1:n y=i-h_m; x=j-h_n;

matlab練習程式(RGB2HSL、HSL2RGB)

  色相飽和度亮度和三原色的相互轉換function main img=imread('lena_color.jpg'); img=mat2gray(img); %任意區間映射到[0,1]; [m n dim]=size(img); imshow(img); %%映像的RGB R=img(:,:,1); G=img(:,:,2); B=img(:,:,3); %%映像RGB2HSL H=zeros(m,n); %色相角

matlab練習程式(映像旋轉,雙線性插值)

  有好多演算法早就想實現了,可是總有各種原因沒有實現,這個雙線性插值旋轉映像就是其中之一。  之前寫過最鄰近插值旋轉映像,傳送門。結合著看效果會很好。clear all;close all;clc;jiaodu=45; %要旋轉的角度,旋轉方向為順時針img=imread('lena.jpg'); %這裡v為原映像的高度,u為原映像的寬度imshow(img);

matlab練習程式(SSIM)

  一種評價壓縮後映像品質的方法,和PSNR類似。具體論文看這裡。  代碼:function main img=imread('lena.jpg'); [m n]=size(img); imgn=imresize(img,[floor(m/8) floor(n/8)]); imgn=imresize(imgn,[m n]); img=double(img); imgn=double(imgn); tmp=[]; for i=9:8:m

matlab練習程式(紋理合成)

關於紋理合成最經典的論文應該就數Efros的Texture Synthesis by Non-parametric

matlab練習程式(霍夫變換檢測直線斜率)

  這個過去用就寫過,這次正好有人問這個演算法,所以在這裡又把C代碼改為了matlab了。  霍夫變換是把原映像中的直線上的每一個點轉換到參數空間對應的曲線上,由於每一個點對應一條曲線,因此在參數空間中所有曲線會相交到一個點,形成一個最值。因此原圖尋找直線斜率的問題就變成了參數空間尋找最值的問題了。代碼如下:clear all;close all;clc;%%%以下只是做一個帶直線的映像而已r=300; jiaodu=30;

matlab練習程式(映像自動聚焦)

自動聚焦需要評判映像的模糊或者清晰程度。當然,真正聚焦還需要配合硬體,我現在已經不搞硬體了,所以也就不去關心那一方面了。主要有三種評判方法:1.灰階方差法評判映像灰階的變化程度,我先使用了全域灰階方差,不過效果不好。又實驗了局部灰階方差,不過由於運算量的問題,也沒做出什麼結果。2.邊緣評判法這個很簡單了,通過對映像進行邊緣檢測,比如sobel,prewitt,roberts等等各種邊緣檢測吧,然後找出邊緣最豐富的那一張圖片。3.能量法映像細節越豐富,傅裡葉分解後的頻率肯定越多,所以能量也能作為一

總頁數: 61357 1 .... 9033 9034 9035 9036 9037 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.