Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。 映像高保真反差處理很簡單,其步驟如下: 1、備份映像原資料; 2、按給定半徑對映像進行高斯模糊;
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。 Photoshop的模糊濾鏡似乎使用的不多,大多數情況下都是使用高斯模糊。
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。 GDI+的TGpImageAttributes類提供了設定映像閾值的功能,下面是使用TGpImageAttributes設定映像閾值的代碼:var
Time of Update: 2018-12-03
procedure TForm1.Button1Click(Sender: TObject);var v: ^Integer; p: ^Integer; i, Len: Integer;begin Len := 6; GetMem(v, Sizeof(Integer) * Len); p := v; for i := 0 to 5 do begin p^ := i * i; Inc(p); end;
Time of Update: 2018-12-03
前幾天,本人寫了幾個Delphi的Base64轉換函式,並寫了一篇部落格文章《Delphi版的Base64轉換函式
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。 Photoshop的銳利化濾鏡很簡單,就是對映像做一個卷積,其卷積模板為: 0 -1 0 -1 8
Time of Update: 2018-12-03
由於CSDN部落格和部落格園的編輯方面有不一致的地方,導致文中部分圖片錯位,為不影響瀏覽效果,建議點擊開啟連結。 由於能力有限,演算法層面的東西自己去創新的很少,很多都是從現有的論文中學習,然後實踐的。 本文涉及的很多演算法,在網路上也有不少同類型的文章,但是肯定的一點就是,很多都是不配代碼的,或者所附帶的代碼都是象徵性的,速度慢,不優雅,不具有實用價值,本文努力解決這些問題。 文中各演算法出現的順序並不代表演算法的優越性,僅僅是作者隨機排布的而已。
Time of Update: 2018-12-03
在Delphi中,由於Indy的TIdHashMessageDigest類有BUG(見我的《要謹慎使用Indy的TIdHashMessageDigest類》一文),只好重新借Indy代碼重新組織改寫了一下,經過簡單測試正常,源碼如下,如有錯誤請指正:unit MessageDigest;interfaceuses SysUtils, Classes;type THashValue128 = array[0..15] of Byte; TMDRecord128 = packed
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。
Time of Update: 2018-12-03
由於CSDN部落格和部落格園的編輯方面有不一致的地方,導致文中部分圖片錯位,為不影響瀏覽效果,建議點擊開啟連結。 由於能力有限,演算法層面的東西自己去創新的很少,很多都是從現有的論文中學習,然後實踐的。 本文涉及的很多演算法,在網路上也有不少同類型的文章,但是肯定的一點就是,很多都是不配代碼的,或者所附帶的代碼都是象徵性的,速度慢,不優雅,不具有實用價值,本文努力解決這些問題。 文中各演算法出現的順序並不代表演算法的優越性,僅僅是作者隨機排布的而已。
Time of Update: 2018-12-03
在使用Delphi可視化設計時,有時覺得某個元件缺少點自己需要的功能或者屬性,或者需要的功能或者屬性是protected,沒法直接得到。比如TPanel,是個容器類組件,其功能是用來放置其它視窗組件和圖形組件,但是,如果想在它的介面上畫點什麼就不那麼方便了,既沒有OnPaint事件,也不能直接擷取其Canvas(該屬性是protected)。 碰到這類問題,我們採用的策略一般有2個:重新寫一個該組件的衍生類別,註冊到IDE的組件面板中,或者動態建立這個類,插入到視窗中,對於類似TP
Time of Update: 2018-12-03
關於GDI+的幾何變換類Matrix的理論和應用有很多書籍和文章介紹,本文只是談一點自己的應用心得。 使用GDI+的Matrix類,可以很方便的進行提供了Rotate(旋轉)、Scale( 縮放)、Shear(切變)等線性變換和Translate(平移),還可以通過這幾個基本的變換組成更複雜的複合變換。通過變換後的圖形及原點座標變化很大,如下面的語句: g.DrawEllipse(Pens.Blue, 0, 0, 100, 50);
Time of Update: 2018-12-03
要在Delphi程式中控制CD-ROM的彈出和關閉,可以利用MMSystem.pas單元的MCI(Media Control Interface)函數。有2個函數可以達到同樣的效果。一個是mciSendCommand函數,另一個是mciSendString函數。下面分別用這2個函數寫的OpenCDDrive函數。 1、使用mciSendCommand:function OpenCDDrive(IsOpen: Boolean; DriveName: char = #
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。 最近一段時間,在整理以前的文章,前幾天剛剛將《Delphi影像處理 --
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。 本文是基於《GDI+在Delphi程式的應用 – Photoshop色相/飽和度/明度功能》一文的BASM實用性過程,有關實現原理可參見《GDI+
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元和《Delphi影像處理 -- 平面幾何變換類》TransformMatrix.pas單元。
Time of Update: 2018-12-03
閱讀提示: 《Delphi影像處理》系列以效率為側重點,一般代碼為PASCAL,核心代碼採用BASM。 《C++影像處理》系列以代碼清晰,可讀性為主,全部使用C++代碼。 儘可能保持二者內容一致,可相互對照。 本文代碼必須包括文章《Delphi影像處理 -- 資料類型及公用過程》中的ImageData.pas單元。 USM銳利化是用來銳利化映像邊緣的,它通過調整映像邊緣細節的對比,並在邊緣的兩側產生一條亮線一條暗線,使畫面整體更加清晰。
Time of Update: 2018-12-03
年初,我寫了一篇關於GDI+亮度調整的文章,見《GDI+ 在Delphi程式的應用 -- 調整映像亮度》,採用的是掃描線逐點改變,當時有網友評論時提出是否可以ColorMatrix進行調整,我覺得映像像素值上下限不好控制,加之沒時間沒去研究,今天,我卻發現該網友提出的方案居然是切實可行的。改變映像亮度,實際就是對像素點的各顏色分量值作一個平移,使用ColorMatrix進行平移是個輕而易舉事! 在《GDI+ 在Delphi程式的應用 -- 調整映像亮度》一文舉例中對圖片增加亮度20