PPTX DOCX XLSX PDF ODP
Aspose.Imaging  .NET के लिए
DICOM

C# के माध्यम से पृष्ठभूमि को DICOM में बदलें

सर्वर-साइड API का उपयोग करके DICOM फ़ाइलों में पृष्ठभूमि बदलने के लिए अपने स्वयं के .NET ऐप्स बनाएं।

C# का उपयोग करके DICOM फ़ाइलों में पृष्ठभूमि कैसे बदलें

अक्सर, आदर्श छवि प्राप्त करने के लिए पृष्ठभूमि बदलने की आवश्यकता होती है। वांछित DICOM प्रारूप छवि प्रभाव प्राप्त करने के लिए, अग्रभूमि वस्तुओं को शेष चित्र से अलग किया जाना चाहिए। यदि पृष्ठभूमि एक समान हो तो स्वचालित वस्तु का पता लगाना संभव है। यदि फोटो की पृष्ठभूमि असमान है या वस्तु को अलग करना चुनौतीपूर्ण है, तो छवि को पहले से चिह्नित करने की सिफारिश की जाती है। इसमें फोटो के भीतर आयताकार क्षेत्रों की पहचान करना शामिल है जहां इच्छित वस्तुएं रहती हैं और उनके प्रकार निर्दिष्ट करना शामिल है। यह क्लाउड एपीआई की ऑब्जेक्ट पहचान सुविधा के माध्यम से मैन्युअल रूप से या स्वचालित रूप से किया जा सकता है। ऑब्जेक्ट चयन और मूल पृष्ठभूमि को हटाने के बाद, एक नई पृष्ठभूमि लागू की जा सकती है या पारदर्शिता लागू की जा सकती है। DICOM फ़ाइलों में पृष्ठभूमि बदलने के लिए, हम इसका उपयोग करेंगे Aspose.Imaging for .NET API जो एक सुविधा संपन्न, शक्तिशाली और उपयोग में आसान छवि हेरफेर और C# प्लेटफॉर्म के लिए रूपांतरण API है। NuGet पैकेज मैनेजर खोलें, खोजें Aspose.Imaging और इंस्टॉल करें। आप पैकेज मैनेजर कंसोल से निम्न कमांड का भी उपयोग कर सकते हैं।

पैकेज प्रबंधक कंसोल कमांड


PM> Install-Package Aspose.Imaging

C# के माध्यम से DICOMs में पृष्ठभूमि बदलने के चरण

आपको अपने परिवेश में निम्न वर्कफ़्लो आज़माने के लिए aspose.imaging.dll की आवश्यकता होगी।

  • लोड DICOM छवि के साथ फ़ाइलें। लोड विधि
  • पृष्ठभूमि बदलें;
  • Aspose द्वारा समर्थित डिस्क में छवि सहेजें। इमेजिंग प्रारूप

सिस्टम आवश्यकताएं

Aspose.Imaging for .NET सभी प्रमुख ऑपरेटिंग सिस्टम पर समर्थित है। बस सुनिश्चित करें कि आपके पास निम्नलिखित पूर्वापेक्षाएँ हैं।

  • माइक्रोसॉफ्ट विंडोज या .NET फ्रेमवर्क, .NET कोर, विंडोज एप्लीकेशन, एएसपी.नेट वेब एप्लीकेशन के साथ संगत ओएस।
  • माइक्रोसॉफ्ट विजुअल स्टूडियो जैसे विकास का माहौल।
  • Aspose.Imaging for .NET आपके प्रोजेक्ट में संदर्भित है।
 

DICOM छवियों में पृष्ठभूमि बदलें - .NET

using Aspose.Imaging;
using Aspose.Imaging.FileFormats.Emf;
using Aspose.Imaging.FileFormats.Png;
using Aspose.Imaging.FileFormats.Tiff.Enums;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.Masking;
using Aspose.Imaging.Masking.Options;
using Aspose.Imaging.Masking.Result;
using Aspose.Imaging.Sources;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
string templatesFolder = @"c:\Users\USER\Downloads";
RemoveBackgroundGenericExample();
void RemoveBackgroundProcessingWithManualRectangles()
{
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
"jp2", "j2k", "tga", "webp", "tif", "gif","ico" };
List<string> vectorFormats = new List<string>() { "svg", "otg", "odg", "wmf", "emf", "wmz", "emz", "cmx", "cdr" };
List<string> allFormats = new List<string>(rasterFormats);
allFormats.AddRange(vectorFormats);
allFormats.ForEach(
formatExt =>
{
var inputFile = Path.Combine(templatesFolder, $"couple.{formatExt}");
bool isVectorFormat = vectorFormats.IndexOf(formatExt) > -1;
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = RasterizeVectorImage(formatExt, inputFile);
}
var outputFile = Path.Combine(templatesFolder, $"remove_background_manual_rectangles.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
FeatheringRadius = 2,
Method = SegmentationMethod.GraphCut,
Args = new AutoMaskingArgs()
{
ObjectsRectangles = new Aspose.Imaging.Rectangle[]
{
// girl's bound box
new Aspose.Imaging.Rectangle(87, 47, 123, 308),
// boy's bound box
new Aspose.Imaging.Rectangle(180, 24, 126, 224)
}
},
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
}
};
using (var maskingSession = new ImageMasking(image).CreateSession(maskingOptions))
{
// first run of segmentation
using (maskingSession.Decompose()) { }
var argsWithUserMarkers = new AutoMaskingArgs()
{
ObjectsPoints = new Point[][]
{
// background markers
null,
// foreground markers
new UserMarker()
// boy's head
.AddPoint(218, 48, 10)
// girl's head
.AddPoint(399, 66, 10)
// girs's body
.AddPoint(158, 141, 10)
.AddPoint(158, 209, 20)
.AddPoint(115, 225, 5)
.GetPoints()
}
};
using (var maskingResult = maskingSession.ImproveDecomposition(argsWithUserMarkers))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
}
File.Delete(outputFile);
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
}
);
}
void RemoveBackgroundAutoProcessingWithAssumedObjects()
{
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
"jp2", "j2k", "tga", "webp", "tif", "gif" };
List<string> vectorFormats = new List<string>() { "svg", "otg", "odg", "eps", "wmf", "emf", "wmz", "emz", "cmx", "cdr" };
List<string> allFormats = new List<string>(rasterFormats);
allFormats.AddRange(vectorFormats);
allFormats.ForEach(
formatExt =>
{
var inputFile = Path.Combine(templatesFolder, $"couple.{formatExt}");
bool isVectorFormat = vectorFormats.IndexOf(formatExt) > -1;
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = RasterizeVectorImage(formatExt, inputFile);
}
var outputFile = Path.Combine(templatesFolder, $"remove_background_auto_assumed_objects.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
AssumedObjects = new List<AssumedObjectData>
{
// girl's bound box
new AssumedObjectData(DetectedObjectType.Human, new Aspose.Imaging.Rectangle(87, 47, 123, 308)),
// boy's bound box
new AssumedObjectData(DetectedObjectType.Human, new Aspose.Imaging.Rectangle(180, 24, 126, 224)),
},
CalculateDefaultStrokes = true,
FeatheringRadius = 1,
Method = SegmentationMethod.GraphCut,
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
},
BackgroundReplacementColor = Color.Green
};
using (var maskingResult = new ImageMasking(image).Decompose(maskingOptions))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
File.Delete(outputFile);
}
);
}
void RemoveBackgroundAutoProcessing()
{
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
"jp2", "j2k", "tga", "webp", "tif", "gif" };
List<string> vectorFormats = new List<string>() { "svg", "otg", "odg", "eps", "wmf", "emf", "wmz", "emz", "cmx", "cdr" };
List<string> allFormats = new List<string>(rasterFormats);
allFormats.AddRange(vectorFormats);
allFormats.ForEach(
formatExt =>
{
var inputFile = Path.Combine(templatesFolder, $"couple.{formatExt}");
bool isVectorFormat = vectorFormats.IndexOf(formatExt) > -1;
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = RasterizeVectorImage(formatExt, inputFile);
}
var outputFile = Path.Combine(templatesFolder, $"remove_background_auto.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
FeatheringRadius = 1,
Method = SegmentationMethod.GraphCut,
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
},
BackgroundReplacementColor = Color.Green
};
using (var maskingResult = new ImageMasking(image).Decompose(maskingOptions))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
File.Delete(outputFile);
}
);
}
void RemoveBackgroundGenericExample()
{
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
"jp2", "j2k", "tga", "webp", "tif", "gif" };
List<string> vectorFormats = new List<string>() { "svg", "otg", "odg", "wmf", "emf", "wmz", "emz", "cmx", "cdr" };
List<string> allFormats = new List<string>(rasterFormats);
allFormats.AddRange(vectorFormats);
allFormats.ForEach(
formatExt =>
{
var inputFile = Path.Combine(templatesFolder, $"couple.{formatExt}");
bool isVectorFormat = vectorFormats.IndexOf(formatExt) > -1;
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = RasterizeVectorImage(formatExt, inputFile);
}
var outputFile = Path.Combine(templatesFolder, $"remove_background.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
CalculateDefaultStrokes = true,
FeatheringRadius = 1,
Method = SegmentationMethod.GraphCut,
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
},
BackgroundReplacementColor = Color.Green
};
using (var maskingResult = new ImageMasking(image).Decompose(maskingOptions))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
File.Delete(outputFile);
}
);
}
string RasterizeVectorImage(string formatExt, string inputFile)
{
string outputFile = Path.Combine(templatesFolder, $"rasterized.{formatExt}.png");
using (var image = Image.Load(inputFile))
{
image.Save(outputFile, new PngOptions());
}
return outputFile;
}
class UserMarker
{
private readonly List<Point> _list = new List<Point>();
public UserMarker AddPoint(int left, int top, int radius)
{
for (var y = top - radius; y <= top + radius; y++)
{
for (var x = left - radius; x <= left + radius; x++)
{
this._list.Add(new Point(x, y));
}
}
return this;
}
public Point[] GetPoints()
{
return this._list.ToArray();
}
}
 
  • Aspose.Imaging for .NET API . के बारे में

    Aspose.Imaging API अनुप्रयोगों के भीतर छवियों (फ़ोटो) को बनाने, संशोधित करने, आकर्षित करने या परिवर्तित करने के लिए एक छवि प्रसंस्करण समाधान है। यह प्रदान करता है: क्रॉस-प्लेटफ़ॉर्म छवि प्रसंस्करण, जिसमें विभिन्न छवि प्रारूपों (समान बहु-पृष्ठ या बहु-फ़्रेम छवि प्रसंस्करण सहित) के बीच रूपांतरण शामिल हैं, लेकिन इन्हीं तक सीमित नहीं है, ड्राइंग जैसे संशोधन, ग्राफिक प्राइमेटिव के साथ काम करना, परिवर्तन (आकार बदलना, फसल करना, फ्लिप करना और घुमाना) , बिनाराइज़ेशन, ग्रेस्केल, एडजस्ट), उन्नत छवि हेरफेर सुविधाएँ (फ़िल्टरिंग, डिथरिंग, मास्किंग, डेस्क्यूइंग), और मेमोरी ऑप्टिमाइज़ेशन रणनीतियाँ। यह एक स्टैंडअलोन लाइब्रेरी है और इमेज ऑपरेशंस के लिए किसी सॉफ्टवेयर पर निर्भर नहीं है। परियोजनाओं के भीतर देशी एपीआई के साथ आसानी से उच्च-प्रदर्शन छवि रूपांतरण सुविधाएँ जोड़ सकते हैं। ये 100% निजी ऑन-प्रिमाइसेस एपीआई हैं और छवियों को आपके सर्वर पर संसाधित किया जाता है।

    ऑनलाइन ऐप के द्वारा DICOMs में पृष्ठभूमि बदलें

    हमारी लाइव डेमो वेबसाइट पर जाकर DICOM दस्तावेज़ों में पृष्ठभूमि बदलें। लाइव डेमो के निम्नलिखित लाभ हैं

      कुछ भी डाउनलोड या सेटअप करने की आवश्यकता नहीं है
      कोई कोड लिखने की जरूरत नहीं
      बस अपनी DICOM फ़ाइलें अपलोड करें और अब पृष्ठभूमि बदलें बटन दबाएं
      परिणामी फ़ाइल के लिए तुरंत डाउनलोड लिंक प्राप्त करें

    DICOM क्या है DICOM फाइल का प्रारूप

    DICOM चिकित्सा में डिजिटल इमेजिंग और संचार के लिए संक्षिप्त है और चिकित्सा सूचना विज्ञान के क्षेत्र से संबंधित है। DICOM फ़ाइल स्वरूप परिभाषा और एक नेटवर्क संचार प्रोटोकॉल का संयोजन है। DICOM .DCM एक्सटेंशन का उपयोग करता है। .DCM दो अलग-अलग स्वरूपों में मौजूद है अर्थात स्वरूप 1.x और स्वरूप 2.x। DCM प्रारूप 1.x आगे सामान्य और विस्तारित दो संस्करणों में उपलब्ध है। DICOM का उपयोग विभिन्न विक्रेताओं से चिकित्सा इमेजिंग उपकरणों जैसे प्रिंटर, सर्वर, स्कैनर आदि के एकीकरण के लिए किया जाता है और इसमें विशिष्टता के लिए प्रत्येक रोगी का पहचान डेटा भी होता है। DICOM फ़ाइलें दो पक्षों के बीच साझा की जा सकती हैं यदि वे DICOM प्रारूप में छवि डेटा प्राप्त करने में सक्षम हैं। DICOM का संचार भाग अनुप्रयोग परत प्रोटोकॉल है और संस्थाओं के बीच संचार के लिए TCP/IP का उपयोग करता है। DICOM की वेब सेवाओं के लिए HTTP और HTTPS प्रोटोकॉल का उपयोग किया जाता है। वेब सेवाओं द्वारा समर्थित संस्करण 1.0, 1.1, 2 या बाद के संस्करण हैं।

    अधिक पढ़ें

    अन्य समर्थित परिवर्तन पृष्ठभूमि प्रारूप

    C# का उपयोग करके, कोई भी व्यक्ति विभिन्न स्वरूपों में पृष्ठभूमि को आसानी से बदल सकता है, जिसमें शामिल हैं।

    APNG (एनिमेटेड पोर्टेबल नेटवर्क ग्राफिक्स)
    BMP (बिटमैप चित्र)
    ICO (विंडोज आइकन)
    JPG (फ़ोटोग्राफ़ी संबंधी विशेषज्ञों का संयुक्त समूह)
    DIB (डिवाइस स्वतंत्र बिटमैप)
    DJVU (ग्राफिक्स प्रारूप)
    DNG (डिजिटल कैमरा छवि)
    EMF (उन्नत मेटाफ़ाइल प्रारूप)
    EMZ (विंडोज कम्प्रेस्ड एन्हांस्ड मेटाफाइल)
    GIF (ग्राफिकल इंटरचेंज प्रारूप)
    JP2 (जेपीईजी 2000)
    J2K (तरंगिका संपीड़ित छवि)
    PNG (पोर्टेबल नेटवर्क ग्राफ़िक्स)
    TIFF (टैग की गई छवि प्रारूप)
    WEBP (रेखापुंज वेब छवि)
    WMF (माइक्रोसॉफ्ट विंडोज मेटाफाइल)
    WMZ (संपीड़ित विंडोज मीडिया प्लेयर त्वचा)
    TGA (टार्गा ग्राफिक)
    SVG (स्केलेबल वेक्टर ग्राफिक्स)
    EPS (एनकैप्सुलेटेड पोस्टस्क्रिप्ट भाषा)
    CDR (वेक्टर ड्राइंग छवि)
    CMX (कोरल एक्सचेंज इमेज)
    OTG (OpenDocument मानक)
    ODG (अपाचे ओपनऑफिस ड्रा प्रारूप)