matlab中的中值濾波medfilt2()和opencv中的中值濾波medianblur()是不同的
matlab中的中值濾波medfilt2()和opencv中的中值濾波medianblur()做出的結果不同,如圖所示:
Opencv處理結果如下:
Matlab處理結果如下:
Opencv處理過程中的程式程式碼:
float aa[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
CvMat temp = cvMat(4, 4, CV_32FC1, &aa);
printf(“原矩陣:\n”);
printarry(&temp);
CvMat*dat = cvCreateMat(4, 4, CV_32FC1);
cvSmooth(&temp, dat, CV_MEDIAN, 3, 3);
printf(“處理後矩陣:\n”);
printarry(dat);
其中cvSmooth()實際呼叫的就是medianblur函式,有圖有真相,原始碼如下:
那麼為什麼處理的結果不同呢?
原因是由於medfilt2(Z, [3 3])預設邊界是用0填充,這就使得最後邊界的畫素可能為0,出現上述圖中四個角點為0的情況。
而cvSmooth預設的在模板處理時,邊界用複製的方式來填充,所以出現了和matlab有差異的情況。而且差異都出現在邊界。
相關推薦
matlab中的中值濾波medfilt2()和opencv中的中值濾波medianblur()是不同的
matlab中的中值濾波medfilt2()和opencv中的中值濾波medianblur()做出的結果不同,如圖所示: Opencv處理結果如下: Matlab處理結果如下: Opencv處理過程中的程式程式碼: float aa[] = { 1, 2, 3, 4, 5, 6, 7,
Java 自增(++) 和 C語言中自增的區別
%d 區別 但是 [] .cn cnblogs 微軟雅黑 自增 華麗 在Java、c語言等高級語言中自增和自減的作用基本一致,都是變量自身加一或減一。下面我只對自增進行說明,自減是類似的。 自增運算符(++),有兩種書寫形式,一個是在變量前: ++ num; 另一種
resultMap自定義映射---8.3.1. 解決列名(表中的字段名稱)和實體類中的屬性名不一致
lec per 編寫 動態代理 參數類型 ID res HERE 用戶 1.1.1.1. 步驟一:將駝峰匹配註釋掉 --------------測試完成後仍然 回來開啟 其他地方可能用到 一旦註釋掉駝峰匹配,那麽再通過queryUserById查詢的結果中,用戶
Java中迭代器Iterator的使用Collection介面(list和set)和Map介面中
Java集合類中Map介面下的相關類並沒有像Collection介面的相關類一樣實現get()方法,因此在要實現遍歷輸出的場景中沒法直接用get()方法來取得物件中的資料,但Java本身提供了另一種遍歷資料的方法,即用Iterator迭代器,雖然Iterator可以用來遍歷讀取資料,但它本質上不是一種方法,它
影象處理中卷積的實現(TensorFlow和OpenCV)
一、用C解釋原理 假設影象(寬6高4),一個卷積核(寬3高3),如下: unsigned char src[24] ={ 1,2,3,4,5,6, 1,1,1,1,1,1, 2,1,2,1,2,1, 4,5,6,1,2,3};float k
OpenCV學習筆記(21)在OpenCV視窗中建立滾動條瀏覽大圖
很久沒發部落格了,趁著近期專案需要,再和大家分享一個小程式,即在OpenCV視窗中建立水平、豎直滾動條來瀏覽大型影象。如果我們所要顯示的影象畫素較高,例如1440*900的,而顯示器只有 1280*800的解析度,那麼通過cvNamedWindow建立的最大視窗也只能看到部分
Java初認識--基本資料型別(int 和byte之間賦值)預設值 型別強轉
主類和主方法 Test.java–是原始檔,原始檔必須與主類名(public class )保持一致,一個原始檔只能有一個主類 ,主方法存在與主類中。 Test.java 原始檔 主類:public class Test 主方法 : public static void main(Strin
Java初認識--基本資料型別(int 和byte之間賦值)預設值 型別強轉
主類和主方法 Test.java–是原始檔,原始檔必須與主類名(public class )保持一致,一個原始檔只能有一個主類 ,主方法存在與主類中。 Test.java 原始檔 主類:public class Test 主方法 : public stat
定義行為像指標的類(類比於智慧指標)和定義行為像值的類
一直糾結於智慧指標shared_ptr的引用計數如何實現。此前看C++ primer不太注意,今天再次翻到這一知識點,再細看一遍,受益非淺呀。原來引用計數的實現也不過如此。 1、定義行為像指標的類 這裡為避免同名,且只強調引用計數的實現,自定義了一個HasPtr類,其中最
一維插值(interp1)和二維插值(interp2)
一、一維插值 1.定義 插值:已知f(x)的N個數據點,f(x)不知道。根據N個數據點估計任意點的函式值f(x)。 2. interp1函式 呼叫格式: yi = interp1(x,y,xi,method) 其中x,y為已知的資料點,通常xi為比x更加密集的資料點,
線段樹(區間和,最大值,最小值,區間動態更新查詢)
//=========================================== //segment tree //final version //by kevin_samuel(fenice) //本模板為轉載模板,後面的註釋和主函式的驗證為Alei新增 #in
淺談JS中的!=、== 、!==、===的用法和區別 JS中Null與Undefined的區別 讀取XML文件 獲取路徑的方式 C#中Cookie,Session,Application的用法與區別? c#反射 抽象工廠
main 收集 data- 時間設置 oba ase pdo 簡單工廠模式 1.0 var num = 1; var str = ‘1‘; var test = 1; test == num //true 相同類型 相同值 te
Kail 系統——SSH進行遠端登入(使用者和密碼正確,但是登入不上)
安裝SSH服務 1、檢視系統中有沒有安裝SSH 輸入下面的命令: [email protected]:~# ssh localhost 若顯示下面資訊,則沒有安裝 ssh: connect to host localhost port 22: Connection
Spring的AOP(xml和註解實現AOP,以及代理模式)
AOP術語: 連線點(Joinpoint):程式執行的某一個特定位置,如類初始前後,方法的執行前後。而Spring只支援方法的連線點。 切點(Pointcut):切點可以定位到相應的連線點,一個切點可以定位多個連線點。&
用 Python 和 OpenCV 檢測圖片上的條形碼(轉載)
原文地址:http://python.jobbole.com/80448/ 假設我們要檢測下圖中的條形碼: 圖1:包含條形碼的示例圖片 現在讓我們開始寫點程式碼,新建一個檔案,命名為detect_barcode.py,開啟並編碼: Python 1&nbs
JAVA輸入/輸出流程式例題(檔案和目錄、位元組流、字元流)
一.檔案和目錄 1.顯示檔案的基本資訊。 2.顯示目錄的基本資訊。 3.在指定目錄下建立單個檔案。 4.指定目錄下建立多個臨時檔案。 二、位元組流 1.生成ZIP壓縮檔案 2.解壓縮zip檔案 3.生成Excel檔案 4.讀取excel檔案 5.生成PDF檔案 6.讀取P
應用SuperIO(SIO)和開源跨平臺物聯網框架ServerSuperIO(SSIO)構建系統的整體方案
SSIO的更新 在SSIO上增加了UDP通訊方式,可以到Github上下載原始碼。在原來的專案中,遠端的裝置與中心站的資料互動並沒有使用過UDP方式。這種短連線的通訊鏈路,不容易維護,主要體現在:(1)持續的資料互動能力。(2)對現場裝置進行長時間的維護和校準。(3)SSIO要協調裝置、
http請求抓包神器-Fiddler(記錄和檢查你電腦的所有http通訊)
Fiddler是做什麼的,能幫助我們做什麼? 1、能夠監聽http/httpS的流量,可以截獲從瀏覽器或者客戶端軟體向伺服器傳送的http/https請求; 2、對截獲之後的請求,我們還能夠檢視請求中的內容; 3、偽造請求。不僅可以偽造客戶端的請求,還能夠偽造伺服器的響應。——該功能能夠方便我們進行前後
Oracle-09-刪除表(drop和truncate區別、閃回刪除等)
一、如果既要刪除表中的資料也要刪除表的結構,請使用droptable語句,其格式如下: drop table 表名 drop table語句(是DDL語句)有如下特徵: (1)它刪除表中所有的資料
hive分割槽partition(動態和靜態分割槽混合使用; partition的簡介)
分割槽是hive存放資料的一種方式。將列值作為目錄來存放資料,就是一個分割槽。這樣where中給出列值時,只需根據列值直接掃描對應目錄下的資料,不掃面其他不關心的分割槽,快速定位,查詢節省大量時間。分動