LEADTOOLS使用教程:圖像數(shù)據(jù)格式的更改
在LeadTools中,您可以使用許多高級、低級的方法和類改變顏色分辨率(每像素的位數(shù))。大多數(shù)圖像處理方法在內(nèi)存中操作圖像,因此在文件中保存圖像時這些更改是永久性的。一些低級的方法會操作您管理的緩沖區(qū),例如在加載圖像時處理數(shù)據(jù)。
下面我們將介紹LeadTools中改變顏色分辨率的類和方法,主要包括以下幾類:
1. 自動顏色還原
獲取和設(shè)置默認(rèn)的抖動方法,被一些內(nèi)部的LEADTOOLS方法引用。 |
2. 主要顏色分辨率
類 |
此類可以將一個圖像轉(zhuǎn)換為每像素任意位數(shù)。 可以設(shè)置輸出路徑、設(shè)定調(diào)色板。您可以直接轉(zhuǎn)換原圖或創(chuàng)建一個新的轉(zhuǎn)換后圖像。 在指定調(diào)色板時,您可以使用簡單的調(diào)色板選項或設(shè)定一個符合您要求的自定義調(diào)色板。自定義調(diào)色板可設(shè)置為任意大小,它可以包括特定的顏色、保留的空白項和開放項。如果您想多次使用一些自定義調(diào)色板,可以使用創(chuàng)建一個表格優(yōu)化性能。 |
以下為使用類的代碼片段,將圖像的分辨率轉(zhuǎn)為每像素8位:
注:附件sampleColorResolutionCommand.rar
1: RasterCodecs codecs = new RasterCodecs(); 2: string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp"); 3: string destFileName = Path.Combine(ImagesPath.Path, "Image1_colorres8.bmp"); 4: 5: // 從磁盤加載源圖像 6: RasterImage image = codecs.Load(srcFileName); 7: 8: //將顏色分辨率轉(zhuǎn)為每像素8位,在單獨的圖像中使用Netscape調(diào)色板 9: ColorResolutionCommand cmd = new ColorResolutionCommand(); 10: cmd.Mode = ColorResolutionCommandMode.CreateDestinationImage; 11: cmd.BitsPerPixel = 8; 12: cmd.Order = RasterByteOrder.Rgb; 13: cmd.DitheringMethod = RasterDitheringMethod.None; 14: cmd.PaletteFlags = ColorResolutionCommandPaletteFlags.UsePalette; 15: cmd.SetPalette(RasterPalette.Netscape()); 16: cmd.Run(image); 17: RasterImage destImage = cmd.DestinationImage; 18: Assert.IsTrue(destImage.BitsPerPixel == 8); 19: 20: // 保存至磁盤 21: codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 8); 22: destImage.Dispose(); 23: image.Dispose(); 24: codecs.Dispose();
3. 支持自定義調(diào)色板的抖動
類 |
使用類可創(chuàng)建一個預(yù)定義的表格,加快在中使用用戶調(diào)色板此類情況的轉(zhuǎn)換速度。 |
在使用時我們應(yīng)該遵循以下的順序:
- 創(chuàng)建一個類的新實例;
- 調(diào)用方法創(chuàng)建表格;
- 調(diào)用方法使表格可用。(將此方法設(shè)為一個單獨的方法允許您可以在不重新創(chuàng)建此表格的情況下在文件中保存表格、獲取您需要的一個表格)
- 將 屬性設(shè)置為 或,運行。
- 若不再需要使用,調(diào)用方法。
以下為類使用的代碼片段(注:附件sampleRasterUserMatchTable.rar)
1: RasterCodecs codecs = new RasterCodecs(); 2: string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp"); 3: string destFileName = Path.Combine(ImagesPath.Path, "RasterUserMatchTable.bmp"); 4: 5: // 從磁盤加載圖像 6: RasterImage image = codecs.Load(srcFileName); 7: 8: //64色彩虹調(diào)色板 9: RasterColor[] colors = 10: { 11: new RasterColor(0, 0, 0), new RasterColor(0, 0, 85), new RasterColor(0, 0, 170), new RasterColor(0, 0, 255), 12: new RasterColor(85, 0, 0), new RasterColor(85, 0, 85), new RasterColor(85, 0, 170), new RasterColor(85, 0, 255), 13: new RasterColor(170, 0, 0), new RasterColor(170, 0, 85), new RasterColor(170, 0, 170), new RasterColor(170, 0, 255), 14: new RasterColor(255, 0, 0), new RasterColor(255, 0, 85), new RasterColor(255, 0, 170), new RasterColor(255, 0, 255), 15: new RasterColor(0, 85, 0), new RasterColor(0, 85, 85), new RasterColor(0, 85, 170), new RasterColor(0, 85, 255), 16: new RasterColor(85, 85, 0), new RasterColor(85, 85, 85), new RasterColor(85, 85, 170), new RasterColor(85, 85, 255), 17: new RasterColor(170, 85, 0), new RasterColor(170, 85, 85), new RasterColor(170, 85, 170), new RasterColor(170, 85, 255), 18: new RasterColor(255, 85, 0), new RasterColor(255, 85, 85), new RasterColor(255, 85, 170), new RasterColor(255, 85, 255), 19: new RasterColor(0, 170, 0), new RasterColor(0, 170, 85), new RasterColor(0, 170, 170), new RasterColor(0, 170, 255), 20: new RasterColor(85, 170, 0), new RasterColor(85, 170, 85), new RasterColor(85, 170, 170), new RasterColor(85, 170, 255), 21: new RasterColor(170, 170, 0), new RasterColor(170, 170, 85), new RasterColor(170, 170, 170), new RasterColor(170, 170, 255), 22: new RasterColor(255, 170, 0), new RasterColor(255, 170, 85), new RasterColor(255, 170, 170), new RasterColor(255, 170, 255), 23: new RasterColor(0, 255, 0), new RasterColor(0, 255, 85), new RasterColor(0, 255, 170), new RasterColor(0, 255, 255), 24: new RasterColor(85, 255, 0), new RasterColor(85, 255, 85), new RasterColor(85, 255, 170), new RasterColor(85, 255, 255), 25: new RasterColor(170, 255, 0), new RasterColor(170, 255, 85), new RasterColor(170, 255, 170), new RasterColor(170, 255, 255), 26: new RasterColor(255, 255, 0), new RasterColor(255, 255, 85), new RasterColor(255, 255, 170), new RasterColor(255, 255, 255) 27: }; 28: 29: // 創(chuàng)建和設(shè)置user match table 30: RasterUserMatchTable userMatchTable = new RasterUserMatchTable(); 31: userMatchTable.Create(colors); 32: userMatchTable.Use(); 33: 34: // 使用新調(diào)色板更改顏色分辨率。注意若您多次使用,user match table 使您的代碼速度更快。它的//代碼在這里出現(xiàn)是因為我們想要向您展示它是怎么使用的。 35: 36: ColorResolutionCommand command = new ColorResolutionCommand( 37: ColorResolutionCommandMode.InPlace, 38: 8, 39: RasterByteOrder.Rgb, 40: RasterDitheringMethod.FloydStein, 41: ColorResolutionCommandPaletteFlags.UsePalette | ColorResolutionCommandPaletteFlags.FastMatch, 42: colors); 43: command.Run(image); 44: 45: //若您不再需要使用user match table,釋放它 46: userMatchTable.Unuse(); 47: 48: // 將圖像保存回磁盤 49: codecs.Save(image, destFileName, RasterImageFormat.Bmp, 8); 50: 51: // 清理 52: image.Dispose(); 53: codecs.Dispose();
4. 專門的分辨率方法
類 |
說明 |
類 |
此方法自動在位圖中使用二值分割。注意,此類只在工具包中可用。此方法能改進識別的結(jié)果(包括OCR、條碼、OMR、ICR)。 但在某些圖像的使用上有一些限制,詳情請點擊查看幫助文檔。 |
類 |
基于直方圖統(tǒng)計分析的兩峰值方法,可將二值分割應(yīng)用于使用了一個自動計算閾值的圖像。注意,此類也只在工具包中可用。 更多信息請點擊查看幫助文檔。 |
類 |
使用類,可以重新分配一個特定圖像的RGB值。用于顏色的調(diào)整和修正。 更多信息請點擊查看幫助文檔。 |
類 |
將圖像轉(zhuǎn)為灰度圖像,并基于此類的屬性擴展色彩成分。注意,此類只在工具包中可用。 更多信息請點擊查看幫助文檔。 |
類 |
通過將每個顏色的飽和度減少至0,將圖像轉(zhuǎn)換為灰度級。這個轉(zhuǎn)換不會改變圖像的顏色辨率。 更多信息請點擊查看幫助文檔。 |
類 |
通過使用每個像素的本地閾值,在不改變每像素位數(shù)的情況下將圖像轉(zhuǎn)為黑白圖像。這個方法可用于條碼識別的預(yù)處理,能夠改進識別的結(jié)果。 更多信息請點擊查看幫助文檔。 |
類 |
將一個1位、4位、8位、16位、24位或32位的圖像轉(zhuǎn)化為8位、12位或16位的灰度圖像。在版本中僅支持12位和16位的灰度圖像。 更多信息請點擊查看幫助文檔。 |
類 |
通過將像素的原始值和新的顏色混合,或用新的顏色替換像素的原始值的方法,將灰度圖像轉(zhuǎn)換為彩色。此類在及以上的工具包可用。此方法的設(shè)計對象為灰度圖像,如果圖像不是灰度的,只能影響圖像中紅=綠=藍(lán)的像素或區(qū)域。 更多信息請點擊查看幫助文檔。 |
類 |
通過將像素的原始值和一種或多種新顏色混合,或用一種或多種新顏色替換像素原始值的方法,將灰度圖像轉(zhuǎn)換為彩色。此類在及以上的工具包可用。此方法的設(shè)計對象為灰度圖像,如果圖像不是灰度的,只能影響圖像中紅=綠=藍(lán)的像素或區(qū)域。 更多信息請點擊查看幫助文檔。 |
類
|
使用特定的循環(huán)模式,將1位、4位、8位、16位、24位或32位圖像轉(zhuǎn)換為半色調(diào)圖像。半色調(diào)圖像是1位的抖動圖像,用于黑白打印或顯示。 更多信息請點擊查看幫助文檔。 |
類
|
通過將樣本顏色轉(zhuǎn)換為目標(biāo)顏色來校正顏色值。這個命令在及以上工具包中可用。 更多信息請點擊查看幫助文檔。 |
類
|
分割圖像,分割后的每段像素具有大致相同的顏色(顏色均勻)。這個命令在及以上工具包中可用。 更多信息請點擊查看幫助文檔。 |
類
|
將一個12位或16位的灰度圖像轉(zhuǎn)換為8位灰度或24-位RGB圖像。此類僅在工具包中可用。 更多信息請點擊查看幫助文檔。 |
5. 低級顏色分辨率的方法和類
方法/類 |
說明 |
方法 |
在指定的緩沖區(qū)中將數(shù)據(jù)轉(zhuǎn)換為規(guī)定的每像素位數(shù)和顏色順序。 |
方法 |
采用循環(huán)的方式,在輸入緩沖區(qū)中以行的方式抖動,并將其寫入一個輸出緩沖區(qū)。 |
方法 |
初始化一個圖像的緩沖抖動。 |
方法 |
清除 和 方法中的所有數(shù)據(jù)變量和緩沖區(qū)。 |
6. 顏色空間的轉(zhuǎn)換
Windows通常使用RGB顏色空間模型,在加載和保存文件時,如有需要,LEADTOOLS會將圖像數(shù)據(jù)在RGB和其他顏色空間之間轉(zhuǎn)換。此外,LEADTOOLS還為其他顏色空間模型提供了方法。您可以使用高級和類創(chuàng)建和合并使用多種顏色空間模型的分色,包括RGB、CMYK、CMY、HSV和HLS。您也可以使用低級RasterColorSpace類在緩沖區(qū)中將原數(shù)據(jù)在不同的顏色空間之間轉(zhuǎn)換,包括RGB、YUV、CMYK、CMY、YIQ、HSV、和 HLS。
注意:LEADTOOLS還支持TIFF CMYK文件的加載,且不需將數(shù)據(jù)轉(zhuǎn)換為BGR。在使用了的圖像中,我們將每一個單獨的頁面作為CMYK平面加載。若您想要將平面保存為TIFF CMYK,可以調(diào)用。
轉(zhuǎn)載來自于//blog.gcpowertools.com.cn/post/2014/09/11/image-processing-change-data-format-by-leadtools.aspx