Time of Update: 2018-12-06
3.1
Time of Update: 2018-12-06
之所以要加1是因為這個還沒有做完,這個只是按照自己的想法實現的,結果。。。果然是不行啊。 photoshop中的徑向模糊演算法我也不清楚,不過下面的對話方塊大致可以讓人猜到一些: 看那個小方框就可以了,我感覺是photoshop只在黑色像素對應的地方進行模糊,其他的地方則不處理。我暫時只實現縮放的效果,如何改變品質也還不清楚。 我的演算法是對每一個像素分別計算他的卷積模板,卷積模板就靠卷積半徑r和當前像素與映像中心像素的斜率確定。 下面是代碼:main.mclear
Time of Update: 2018-12-06
記得剛讀研究生的時候,學習的第一個演算法就是meanshift演算法,所以一直記憶猶新,今天和大家分享一下Meanshift演算法,如有錯誤,請線上交流。Mean Shift演算法,一般是指一個迭代的步驟,即先算出當前點的位移均值,移動該點到其位移均值,然後以此為新的起始點,繼續移動,直到滿足一定的條件結束. 1. Meanshift推導給定d維空間Rd的n個樣本點 ,i=1,…,n,在空間中任選一點x,那麼Mean Shift向量的基本形式定義為:
Time of Update: 2018-12-06
做影像處理,最耗時間的運算應該就是卷積運算那一步了。以後如果有機會在用c++做影像處理的項目的話,那麼這個卷積部分還是要最佳化的。Matlab因為是驗證演算法,其實是沒必要最佳化的。所以我就把卷積這一部分單獨列出一個函數,用彙編實現了。我可是電子工程出身,彙編當然不在話下。 函數是用彙編寫的,用的是c++內嵌asm彙編,相同功能的c++代碼也實現了,不過注釋掉了,去掉注釋能得到相同的結果。 讀和顯示映像用了opencv函數庫,話說上一個項目結束之後好像就沒怎麼用過這個庫了,畢竟,單單調用
Time of Update: 2018-12-06
這兩天幫一個老師修改論文的格式,真是深深的體會到用word在修改論文時的難處啊。所以我就想自己將來寫論文什麼的,要是這樣修改還不把自己累死了,所以就搜到了Latex這樣一款替代軟體,與其說是替代,不如說這就是正統的論文排版軟體呢。所以呢,我想以後也要對這個軟體好好學習一番,學到什麼新的技巧一般都會在這裡記錄一下的,所以本標籤下大多數文章都會是簡單的介紹加代碼注釋這樣的形式的。 下面是最基本的論文題目,作者,再加兩三句話來熟悉這個軟體用的hello world:\documentclass{
Time of Update: 2018-12-06
做meanshift物體跟蹤的時候中間有一步叫做長條圖反向投影,所以我就先實現了這樣一個步驟。 長條圖反向投影說白了就是模板匹配,給定一個較小的目標模板,然後再逐個遍曆原映像和模板映像相同的映像塊的,對比映像塊和模板的長條圖,然後把比較結果存入一個新的映像中,新映像中的全域極值就是模板在原映像中所在的位置。這裡主要麻煩的是怎麼比較兩個映像塊的長條圖,Opencv中實現了5種對比的方法,所以我在這裡也對應的實現了5種方法。 5種方法分別是correl(相關)、chisqr(卡方)、inte
Time of Update: 2018-12-06
#include <iostream>using namespace std;class test{public: test(int a,...); ~test(); void setdata(); void showdata(); int **data; int *N; //儲存每個參量的值 int n; //統計參量的個數};test::test(int a,...){ int *p=&a; n=0;
Time of Update: 2018-12-06
好久沒看書了,隨便拿來《編程珠璣》翻到第8章,介紹了一個叫求數組中最大子數組的演算法,是線性時間複雜度。 問題描述是具有n個浮點數的向量x,求向量中任何連續子向量的最大和。#include <iostream>using namespace std;int main(){ int x[10]={31,-41,59,26,-53,58,97,-93,-23,84}; int maxsofar=0; int maxendinghere=0; for
Time of Update: 2018-12-06
網上好多文章都好坑爹,配置麻煩死了,一點也不簡潔,我這裡給一個最簡潔並且很好用的版本。clear all;close all;clc;obj=videoinput('winvideo',1,'YUY2_320x240'); %一般的家用網路攝影機第三個參數這樣就可以,不能運行直接去掉第三個參數也可以h1=preview(obj); %預覽視頻,同時擷取控制代碼 h2=figure(2);
Time of Update: 2018-12-06
這裡所謂的張量和黎曼那裡的張量是不一樣的,那個張量更多的用在物理上,這個張量就是矩陣的擴充。比如零階張量就是數,一階張量就是向量,二階張量就是矩陣,三階四階就是更高維的數的集合。這個領域現在在數學上還都是很新的東西,矩陣的秩我們都知道怎麼求,但是三維的張量或更高維的張量的秩現在在數學上也沒有結果。至於張量的奇異值分解也只是也只是用很早的如用HOSVD來處理,我感覺這並不完全合適,新的分解演算法就連老美也都沒研究出來,從二維到多維的確有很多基礎的理論都不適用了,像兩個張量相乘這樣基礎的演算法,
Time of Update: 2018-12-06
#pragma warning (disable:4786)#include <string>#include <iostream>#include <map>using namespace std;int main(){ string name[]={"tian","dsp","su","chu"}; map<int,string> mapname; for (int i=0;i<4;i++) {
Time of Update: 2018-12-06
這裡載入的圖片和tex源檔案是在一個目錄下的,置中最好用centerline,我試了試center和centering,好像都不行。什麼begin{figure},end{figure}好像也都不行。代碼如下:\documentclass{cctart}\usepackage{graphicx} %載入圖形包\begin{document}\section{第一章}LaTeX(LATEX,音譯“拉泰赫”)是一種基於TeX的排版系統,由美國電腦學家萊斯利·蘭伯特(Leslie
Time of Update: 2018-12-06
介紹一下奇異值分解來壓縮映像。今年的上半年中的一篇部落格貼了一篇用奇異值分解處理pca問題的程式,當時用的是映像序列,是把映像序列中的不同部分分離開來。這裡是用的不是映像序列了,只是單單的一幅映像,所以直接就對映像矩陣進行svd了。 吳軍的《數學之美》裡其實已經介紹過用svd進行大資料的壓縮了,不過我這裡還是針對映像進行介紹一下吧。比如一幅1000*1000的映像A,儲存就需要1000000個像素了。我們對A進行svd分解,則A=USV’,如果rank(A)=r,那麼U就為1000*r的矩
Time of Update: 2018-12-06
jpg壓縮原理可以參考這篇文章http://hi.baidu.com/tiandsp/item/f5a2dcde6ef1405bd73aae41,我很早以前轉的一篇文章。 沒有使用libjpeg的壓縮代碼可以看看這篇文章http://hi.baidu.com/tiandsp/item/9b5843c58a3b4474cfd4f841,也是我很早以前轉的。 這次使用libjpeg庫壓縮和上一篇的解壓正好對應起來,有好多函數名稱我都是對稱的起的,所以結合起來看效果更好。 和上一篇一樣,只能
Time of Update: 2018-12-06
其實在matlab中調用系統函數fspecial和imfilter這兩個函數就能很簡單的實現動感模糊,不過我可不想就這樣簡單的實現,所以就自己從頭寫了。動感模糊最複雜的就是構造卷積矩陣了,卷積矩陣由兩個參數決定,模糊半徑r和模糊角度theta,通過這兩個參數,就能構造不同的模板矩陣,而映像卷積時則和普通的卷積沒有什麼區別。 構造模板矩陣,首先是通過模糊半徑r確定模板矩陣的寬和高,這裡需要用到勾股定理,這裡的r其實就相當於勾股定理中的弦,也就是斜邊,那麼模板的高就是r*sin(theta),
Time of Update: 2018-12-06
我們在寫濾波程式時一般會用矩陣模板與原映像做卷積,這時候在做映像邊界的處理是一般都選擇忽略邊緣,不過要是模板比較大,那麼處理的效果就不好了,映像四周就會是原映像,中間才是濾波後的結果,雖然用Matlab的imfilter就能解決,不過還是自己通過濾波的原理實踐一下比較好。 模板和映像一共有如下16種關係,我粗略的畫了一下,前三張小矩形的是模板、大的矩形是映像,最後一張大的是模板,小的是映像。這就是映像和模板卷積時的所有關係。 看似好像要寫16個if判斷,其實是不用的,我們只要判斷卷積時模
Time of Update: 2018-12-06
還是關於映像格式上的東西。使用了libjpeg庫將jpeg映像轉換到bmp格式。解壓原理還是相對複雜的,將來有機會說不定會詳細介紹。這裡只是庫的使用而已。 首先需要下載libjpeg庫,網址在這裡:http://www.ijg.org/ 然後需要配置環境,我是在windows下用vs2010搞的,編譯庫可以參考這篇文章。編譯出jpeg.lib就可以了。當然實際編程還需要相應的標頭檔,標頭檔在下載的檔案中。 如果不想編譯就在這下載吧:http://vdisk.weibo.com/s/jp
Time of Update: 2018-12-06
雖然自己是搞視頻映像的,不過偶爾看看音頻方面的資料也是可以調節一下的。 下面就來分析一下wav波形檔案的格式。 我們先隨便找一個wav檔案,查看其屬性,就能得到下面的結果。 上面主要注意檔案大小,聲音長度與位元速率。 檔案佔用空間就不用關心了,如果有人想知道為什麼檔案佔用空間比檔案大小要大,我在這裡也解釋一下。這和檔案在硬碟中的組織方式有關係,這裡的硬碟分區是以最小4096Byte為單位的,我檔案的大小是1325044Byte,那麼1325044/4096=323.
Time of Update: 2018-12-06
for i=1:40 fname=strcat('C:\Users\tc\Desktop\test\1 (',int2str(i),').bmp'); im(:,:,i)=imread(fname); imshow(im(:,:,i)) M(i) = getframe; end
Time of Update: 2018-12-06
PSNR,峰值信噪比,通常用來評價一幅映像壓縮後和原映像相比品質的好壞,當然,壓縮後映像一定會比原映像品質差的,所以就用這樣一個評價指標來規定標準了。PSNR越高,壓縮後失真越小。這裡主要定義了兩個值,一個是均方差MSE,另一個是峰值信噪比PSNR,公式如下:這裡的MAX通常是映像的灰階級,一般就是255了。這裡就不用什麼壓縮演算法了,就是將映像縮小再放大比較一下,下面是代碼:close all;clear all;clc;img=imread('lena.jpg');[h w]=size(