1. 程式人生 > >實現正方形圖片dct的c++程式碼(使用AXAT)

實現正方形圖片dct的c++程式碼(使用AXAT)

#include<iostream>
#include<fstream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;
const double pi = 3.141592;
void initDctMat(Mat &A)  //計算8x8塊的離散餘弦變換系數
{
	for (int i = 0; i < A.cols; ++i)
		for (int j = 0; j <A.rows; ++j)
		{
			float a;
			if (i == 0)
				a = sqrt(1.0 / A.rows);//--------
			else
				a = sqrt(2.0 / A.rows);
			A.ptr<float>(i)[j] = a*cos((j + 0.5)*pi*i / A.rows);
		}
}
//dct變換
void myDct(Mat &image, const Mat &A)
{
	image(Range(0, image.rows), Range(0, image.cols)) = A * image(Range(0, image.rows), Range(0, image.cols)) *A.t();//range函式是什麼意思
}
int main()
{
	//讀取影象,影象為灰度圖,單通道
	Mat image = imread("pic.png", CV_LOAD_IMAGE_GRAYSCALE);
	Mat fimage;
	Mat A(Size(image.rows, image.cols), CV_32FC1);// 離散餘弦係數矩陣---------定義矩陣的大小以及cv——32FC1??
	//顯示原圖
	if (!image.empty())
		imshow("image", image);
	//計算A係數
	initDctMat(A);
	//轉換成浮點數矩陣,進行dct變換
	image.convertTo(fimage, CV_32FC1);//將圖片轉化成浮點數矩陣,然後進行dct的變換----------
	myDct(fimage, A);//引數為圖片,離散餘弦係數矩陣,mask量化,該函式的作用是進行dct變換,在函式中fimage當做x
	imshow("壓縮圖", fimage);//dct變換後的圖片
	imshow("還原圖", image);
	waitKey(0);
	return 0;
}

1、定義並計算出離散餘弦變化係數。

2、初始化mask量化矩陣

3、將影象轉化成浮點型矩陣//image.convertTo(fimage, CV_32FC1)

4、進行dct變換//引數:(浮點型矩陣,離散餘弦變化係數,mask量化矩陣),步驟:將畫素進行分塊,X=AXAT,量化image/mask

5、將dct變化後的圖片轉化成非零矩陣,用非零點數/總數=壓縮率並輸出、

6、顯示壓縮圖片:將dct變換後的矩陣轉化成圖片

7、進行idct變換//步驟:量化image.mul(mask)mutiply ,X=ATXA

8、顯示原圖:將idct變換後的矩陣轉化為圖片輸出

G

M

T

Detect languageAfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu AfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu

Text-to-speech function is limited to 200 characters

相關推薦

freemarker+springMVC+ajaxfileupload實現非同步圖片上傳單張

第一步:下載JQuery的JS檔案ajaxfileupload.js 並引入到freemarker 第二步:freemarker頁面 <span style="font-size:18px;"><!DOCTYPE html> <html l

實現正方形圖片dct的c++程式碼使用AXAT

#include<iostream> #include<fstream> #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using

基於libjpeg庫實現JPEG圖片壓縮程式碼實現程式碼普適性強

本文先把程式碼貼上,後續會講解原理及實現過程1、從官網上下載jpeg原始碼,編譯成庫(本人在windows下編譯),編譯方法網上很多,這裡不敘述。2、新增庫檔案和jpeglib.h、jmorecfg.h、jconfig.h至工程中3、程式碼實現(VS2013)#define

基於libjpeg庫實現JPEG圖片解碼程式碼實現程式碼普適性強

準備工作同上篇一致。JPEG壓縮基於libjpeg中的example.c進行擴充套件編寫解碼原理及實現後續會進行介紹程式碼部分:#include <afxwin.h>#include <setjmp.h>extern "C" {#include "jp

HTML5+Canvas+jQuery調用手機拍照功能實現圖片上傳

customer mkdir 狀態保存 ont false lan else if 項目 action 上一篇僅僅講到前臺操作,這篇專門涉及到Java後臺處理。前臺通過Ajax提交將Base64編碼過的圖片數據信息傳到Java後臺,然後Java這邊進行接收處理。通過

.NetCore下使用Prometheus實現系統監控和警報 客戶端程式碼處理

在程式碼中使用就比較簡單了 Nuget包獲取下 prometheus-net prometheus-net.AspNetCore 然後新增中介軟體就行了 app.UseMetricServer(); 預設地址都是/metrics,在Prometheus中的targets就是指向了這

Android圖片載入框架最全解析實現帶進度的Glide圖片載入功能筆記

參考原文:Android圖片載入框架最全解析(七),實現帶進度的Glide圖片載入功能 擴充套件目標 對Glide進行功能擴充套件,使其支援監聽圖片下載進度的功能 開始 dependencies { compile 'com.github.bumptech.glid

python+openCV實現簡單的圖片搜尋功能

一、圖片搜尋引擎有三種不同的模式  1.Search by Meta-Data:元資料搜尋模式,這種和傳統的文字搜尋類似,給索引資料新增文字註釋,上傳待查詢的圖片的時候,需要附加圖片的文字描述,實際在後臺搜尋對應的文字描述,典型的有 https://www.flickr.com/ 

OpenCV下車牌定位演算法實現程式碼

             分類:            影象處理

四次方程根式解+四次以上方程近似解的js實現程式碼1——複數類+複數常量+三角函式簡表

本人正在寫矩陣史詩級玩法系列部落格,寫到求二元二次方程組的地方來了,消元后最高會生成一元四次方程,而這個求根公式雖然成熟,但程式碼量也不少,所以單獨封裝成工具類。 本不打算講解的,但考慮到有的朋友可能沒接觸過複數,或者說雖然接觸過複數但已經忘得一乾二淨,那這裡我就簡單說一下

KNN實現圖片的分類python

一 . K-近鄰演算法(KNN)概述      最簡單最初級的分類器是將全部的訓練資料所對應的類別都記錄下來,當測試物件的屬性和某個訓練物件的屬性完全匹配時,便可以對其進行分類。但是怎麼可能所有測試物件都會找到與之完全匹配的訓練物件呢,其次就是存在一個測試物件同時與多個訓練

二叉搜尋樹詳解及實現程式碼BST

概念 二叉搜尋樹(Binary Search Tree),又稱二叉排序樹,它或者是一顆空樹,或者具有如下性質的樹: 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 它的左右子樹也分別

Python3.5+PyQt5多執行緒+itchat實現微信防撤回桌面版程式碼

weChatThread執行緒類 之前一直不會python多執行緒,寫這個程式的時候,發現不用多執行緒會陷入無限未響應狀態。於是學了半天python多執行緒,但是在主函式裡寫的時候,發現一個問題,Ui主執行緒和工作執行緒沒有分離,使用itchat等庫的時候會堵

《統計學習方法》+樸素貝葉斯演算法+C++程式碼簡單實現

        首先,學習樸素貝葉斯演算法得了解一些基本知識,比如全概率公式和貝葉斯公式,這些知識隨便找一本書或者在網上都能夠獲得。在此,這裡僅關注貝葉斯演算法本身,以及其具體的實現(以例4.1的例子為參考)。     貝葉斯演算法:     程式設計實現以上演算法,

個人專案初始版本實現程式碼matlab

% wordcount %實現詞頻的統計 %% 清空變數 clear clc %% 初始版本的開始測試 str1 = 'my name is cuifengrui what is your name'; %% 具體實現過程 sort_str1 = sort(str1)  

HTML5+Canvas+jQuery呼叫手機拍照功能實現圖片上傳

上一篇只講到前臺操作,這篇專門涉及到Java後臺處理,前臺通過Ajax提交將Base64編碼過的圖片資料資訊傳到Java後臺,然後Java這邊進行接收處理,通過對圖片資料資訊進行Base64解碼,之後使用流將圖片資料資訊上傳至伺服器進行儲存,並且將圖片的路徑地址存進資料庫。

DIV+CSS實現仿SELECT下拉框程式碼JQUERY

wangking 寫道 下拉框特點:1.可自定義下拉框的高度和寬度。2.無需使用者寫多餘程式碼,就和用原生態的SELECT一樣的原理,使用簡單。3.功能強大,在下拉框中增加了extraData   DIV層,供使用者自定義特殊需求,當然使用者也可以不選擇使用extraDat

看資料結構寫程式碼38 圖的鄰接多重表表示法與實現

圖的鄰接多重表 是 無向圖的 另一種表示法。其與 鄰接表 的差別 僅僅 在於 ,鄰接表 用 兩個 頂點 來表示 一條邊,而 鄰接多重表 用一個 頂點來表示一條邊。這樣使得 鄰接多重表 在 某些操作 要 來的 方便。例如 將 搜尋過的邊 做記號 或者 刪除 一條邊。 下面是鄰

關於評論話題挖掘的研究及其實現程式碼LDA

引言 在 2016年中,我們參加了一個由廈門信研院舉辦的大資料比賽。當時,我們拿到的題目為影迷關注點分析。資料是來自於微博與豆瓣的影迷評論資料,其資料量達600多萬條評論資料,分別對應於2000

SSM框架下實現驗證碼圖片驗證功能原始碼

SSM框架下實現驗證碼圖片驗證功能 背景圖片資源路徑  https://download.csdn.net/download/hero_qhz/10322064 一、首先,在pom裡面加上需要用的資源jar包等,並且加上驗證圖片的引用圖片路徑,否則專案啟動會報找不到圖片資源的錯