Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Mrc
Private Function MrcListSegmentation(ByVal image As RasterImage) As MrcSegmenter
Dim segmentImageOptions As MrcSegmentImageOptions = MrcSegmentImageOptions.Empty
segmentImageOptions.CleanSize = 5
segmentImageOptions.SegmentQuality = 50
segmentImageOptions.ColorThreshold = 25
segmentImageOptions.BackgroundThreshold = 10
segmentImageOptions.CombineThreshold = 75
segmentImageOptions.Flags = MrcSegmentImageFlags.FavorOneBit Or MrcSegmentImageFlags.SegmentWithBackground
Dim backColor As RasterColor = New RasterColor(255, 255, 255)
Dim foreColor As RasterColor = New RasterColor(0, 0, 0)
Dim mrcSegmenter As MrcSegmenter = New MrcSegmenter(image, RasterColor.FromKnownColor(RasterKnownColor.White), RasterColor.FromKnownColor(RasterKnownColor.Black))
mrcSegmenter.SegmentImage(image, segmentImageOptions)
Return mrcSegmenter
End Function
<TestMethod()> _
Public Sub SaveBitmapListExample()
' Load an image
Dim codecs As RasterCodecs = New RasterCodecs()
codecs.ThrowExceptionsOnInvalidImages = True
Dim image1 As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "MRCSegmentation.mrc"))
' Load an image
Dim image2 As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "MRCSegmentation.mrc"))
Dim segmenter1 As MrcSegmenter = MrcListSegmentation(image1)
Dim segmenter2 As MrcSegmenter = MrcListSegmentation(image2)
Dim segmenter3 As MrcSegmenter = CType(segmenter2.Clone(), MrcSegmenter)
Dim segmenterList As List(Of MrcSegmenter) = New List(Of MrcSegmenter)()
segmenterList.Add(segmenter1)
segmenterList.Add(segmenter2)
segmenterList.Add(segmenter3)
Dim segmenterArray As MrcSegmenter() = New MrcSegmenter(2) {}
segmenterList.CopyTo(segmenterArray, 0)
Dim imageList As List(Of RasterImage) = New List(Of RasterImage)()
Dim index As Integer
For index = 0 To 2
If segmenterList.Contains(segmenterArray(index)) Then
Select Case segmenterList.IndexOf(segmenterArray(index))
Case 0
imageList.Add(image1)
Case 1
imageList.Add(image2)
Case 2
' Remove the last segmenter from the segmenter array...
segmenterList.Remove(segmenterArray(index))
End Select
End If
Next index
Dim compressionOptions As MrcCompressionOptions = New MrcCompressionOptions()
compressionOptions.MaskCoder = MrcMaskCompression.FaxG31D
compressionOptions.PictureCoder = MrcPictureCompression.Jpeg
compressionOptions.PictureQualityFactor = 10
compressionOptions.Text2BitCoder = MrcTextCompression2BitCoder.Gif2Bit
compressionOptions.Grayscale2BitCoder = MrcGrayscaleCompression2BitCoder.Jbig2
compressionOptions.Grayscale8BitCoder = MrcGrayscaleCompression8BitCoder.GrayscaleCmw
compressionOptions.Grayscale8BitFactor = 2
' Save the two segmenters
MrcSegmenter.SaveBitmapList(segmenterList, imageList, Path.Combine(LEAD_VARS.ImagesDir, "SaveBitmapListResult.mrc"), MrcImageListFormat.MrcTif, compressionOptions)
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Mrc;
private MrcSegmenter MrcListSegmentation(RasterImage image)
{
MrcSegmentImageOptions segmentImageOptions = MrcSegmentImageOptions.Empty;
segmentImageOptions.CleanSize = 5;
segmentImageOptions.SegmentQuality = 50;
segmentImageOptions.ColorThreshold = 25;
segmentImageOptions.BackgroundThreshold = 10;
segmentImageOptions.CombineThreshold = 75;
segmentImageOptions.Flags = MrcSegmentImageFlags.FavorOneBit | MrcSegmentImageFlags.SegmentWithBackground;
RasterColor backColor = new RasterColor(255, 255, 255);
RasterColor foreColor = new RasterColor(0, 0, 0);
MrcSegmenter mrcSegmenter = new MrcSegmenter(image, RasterColor.FromKnownColor(RasterKnownColor.White), RasterColor.FromKnownColor(RasterKnownColor.Black));
mrcSegmenter.SegmentImage(image, segmentImageOptions);
return mrcSegmenter;
}
[TestMethod]
public void SaveBitmapListExample()
{
// Load an image
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
RasterImage image1 = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir,"MRCSegmentation.mrc"));
// Load an image
RasterImage image2 = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir,"MRCSegmentation.mrc"));
MrcSegmenter segmenter1 = MrcListSegmentation(image1);
MrcSegmenter segmenter2 = MrcListSegmentation(image2);
MrcSegmenter segmenter3 = (MrcSegmenter) segmenter2.Clone();
List<MrcSegmenter> segmenterList = new List<MrcSegmenter>();
segmenterList.Add(segmenter1);
segmenterList.Add(segmenter2);
segmenterList.Add(segmenter3);
MrcSegmenter[] segmenterArray = new MrcSegmenter[3];
segmenterList.CopyTo(segmenterArray, 0);
List<RasterImage> imageList = new List<RasterImage>();
int index;
for(index = 0 ; index < 3; index++)
{
if (segmenterList.Contains(segmenterArray[index]))
{
switch (segmenterList.IndexOf(segmenterArray[index]))
{
case 0:
imageList.Add(image1);
break;
case 1:
imageList.Add(image2);
break;
case 2:
// Remove the last segmenter from the segmenter array...
segmenterList.Remove(segmenterArray[index]);
break;
}
}
}
MrcCompressionOptions compressionOptions = new MrcCompressionOptions();
compressionOptions.MaskCoder = MrcMaskCompression.FaxG31D;
compressionOptions.PictureCoder = MrcPictureCompression.Jpeg;
compressionOptions.PictureQualityFactor = 10;
compressionOptions.Text2BitCoder = MrcTextCompression2BitCoder.Gif2Bit;
compressionOptions.Grayscale2BitCoder = MrcGrayscaleCompression2BitCoder.Jbig2;
compressionOptions.Grayscale8BitCoder = MrcGrayscaleCompression8BitCoder.GrayscaleCmw;
compressionOptions.Grayscale8BitFactor = 2;
// Save the two segmenters
MrcSegmenter.SaveBitmapList(segmenterList, imageList,Path.Combine(LEAD_VARS.ImagesDir,"SaveBitmapListResult.mrc"), MrcImageListFormat.MrcTif, compressionOptions);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}