DICOM छवियों के लिए फ़िल्टर लागू करने के लिए Python का उपयोग करें
सर्वर एपीआई के माध्यम से DICOM छवियों और तस्वीरों को फ़िल्टर करने के लिए Python ऐप्स बनाएं
Python के साथ DICOM छवियों और फ़ोटो को कैसे फ़िल्टर करें
अच्छी तरह से खींची गई प्रत्येक तस्वीर में सुधार की संभावना होती है, कुछ पूरी तरह से अलग विकसित होने का मौका होता है, और एक अनूठी रचना के रूप में उभरने का मौका मिलता है। फ़िल्टर छवि और फोटो को बेहतर बनाने में एक बहुमुखी उपकरण के रूप में काम करते हैं, जो आपको चुनिंदा रूप से तीक्ष्णता बढ़ाने, धुंधलापन लाने, या वास्तव में विशिष्ट परिणाम के लिए रंग कलाकृतियों को खत्म करने की अनुमति देते हैं। रंग ग्रेडिएंट्स को सहजता से मिश्रित करने, अवांछित शोर को खत्म करने और अपनी तस्वीर में ऑब्जेक्ट किनारों की तीक्ष्णता को बढ़ाने के लिए व्यक्तिगत रूप से या संयोजन में छवि प्रभावों के साथ प्रयोग करें। इन छवि फ़िल्टर को DICOM फ़ाइलों पर लागू करने के लिए, हम इसका उपयोग करेंगे Aspose.Imaging for Python via .NET एपीआई जो कि पायथन प्लेटफॉर्म के लिए एक सुविधा संपन्न, शक्तिशाली और उपयोग में आसान छवि हेरफेर और रूपांतरण एपीआई है। आप इसे अपने सिस्टम कमांड से निम्नलिखित कमांड का उपयोग करके इंस्टॉल कर सकते हैं।
द सिस्टम कमांड लाइन
>> pip install aspose-imaging-python-net
Python के माध्यम से DICOM को फ़िल्टर करने के चरण
आपको aspose-imaging-python-net की जरूरत है ताकि आप अपने खुद के माहौल में नीचे दिए गए वर्कफ़्लो को आज़मा सकें।
- लोड DICOM छवि के साथ फ़ाइलें। लोड विधि
- छवियों को फ़िल्टर करें;
- Aspose द्वारा समर्थित डिस्क में संपीड़ित छवि को सहेजें। इमेजिंग प्रारूप
सिस्टम आवश्यकताएं
Aspose.Imaging for Python सभी प्रमुख ऑपरेटिंग सिस्टम पर समर्थित है। बस सुनिश्चित करें कि आपके पास निम्नलिखित पूर्वापेक्षाएँ हैं।
- माइक्रोसॉफ्ट विंडोज/लिनक्स .NET कोर रनटाइम के साथ।
- पायथन और PyPi पैकेज मैनेजर।
फ़िल्टर DICOM इमेज - Python
from aspose.imaging import RasterImage, Image, IMultipageImage, Rectangle | |
from aspose.imaging.imagefilters.filteroptions import * | |
from aspose.imaging.imageoptions import PngOptions | |
from aspose.pycore import as_of, is_assignable | |
import os | |
if 'TEMPLATE_DIR' in os.environ: | |
templates_folder = os.environ['TEMPLATE_DIR'] | |
else: | |
templates_folder = r"C:\Users\USER\Downloads\templates" | |
delete_output = 'SAVE_OUTPUT' not in os.environ | |
def delete_file(file): | |
if delete_output: | |
os.remove(file) | |
def small_rectangular_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), SmallRectangularFilterOptions()), "smallrectangular") | |
def big_rectangular_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), BigRectangularFilterOptions()), "bigrectangular") | |
def sharpen_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), SharpenFilterOptions()), "sharpen") | |
def motion_wiener_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), MotionWienerFilterOptions(20, 2, 0)), "motionwiener") | |
def bilateral_smoothing_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), BilateralSmoothingFilterOptions()), "bilateralsmoothing") | |
def gauss_blur_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), GaussianBlurFilterOptions(5, 4)), "gaussblur") | |
def gauss_wiener_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), GaussWienerFilterOptions(5, 5)), "gausswiener") | |
def median_filter(): | |
filter_images(lambda image: image.filter(Rectangle(image.width // 6, image.height // 6, image.width * 2 // 3, image.height * 2 // 3), MedianFilterOptions(20)), "median") | |
def filter_images(do_filter, filter_name): | |
obj_init = [] | |
obj_init.append("jpg") | |
obj_init.append("png") | |
obj_init.append("bmp") | |
obj_init.append("apng") | |
obj_init.append("dicom") | |
obj_init.append("jp2") | |
obj_init.append("j2k") | |
obj_init.append("tga") | |
obj_init.append("webp") | |
obj_init.append("tiff") | |
obj_init.append("gif") | |
obj_init.append("ico") | |
raster_formats = obj_init | |
obj_init2 = [] | |
obj_init2.append("svg") | |
obj_init2.append("otg") | |
obj_init2.append("odg") | |
obj_init2.append("eps") | |
obj_init2.append("wmf") | |
obj_init2.append("emf") | |
obj_init2.append("wmz") | |
obj_init2.append("emz") | |
obj_init2.append("cmx") | |
obj_init2.append("cdr") | |
vector_formats = obj_init2 | |
all_formats = raster_formats | |
all_formats.extend(vector_formats) | |
for format_ext in all_formats: | |
input_file = os.path.join(templates_folder, f"template.{format_ext}") | |
is_vector_format = format_ext in vector_formats | |
if is_vector_format: | |
input_file = rasterize_vector_image(format_ext, input_file) | |
output_file = os.path.join(templates_folder, f"{filter_name}_{format_ext}.png") | |
print(format_ext) | |
# explicit type casting from Image to RasterImage | |
with as_of(Image.load(input_file), RasterImage) as image: | |
multi_page = None | |
# if image implements an IMultipageImage interface | |
if is_assignable(image, IMultipageImage): | |
multi_page = as_of(image, IMultipageImage) | |
if multi_page is not None and multi_page.page_count > 1: | |
page_index = 0 | |
for page in multi_page.pages: | |
file_name = f"{filter_name}_page{page_index}_{format_ext}.png" | |
do_filter(as_of(page, RasterImage)) | |
page.save(templates_folder + file_name, PngOptions()) | |
delete_file(templates_folder + file_name) | |
page_index += 1 | |
else: | |
do_filter(image) | |
image.save(output_file, PngOptions()) | |
delete_file(output_file) | |
if is_vector_format: | |
delete_file(input_file) | |
def rasterize_vector_image(format_ext, input_file): | |
output_file = os.path.join(templates_folder, "rasterized.{format_ext}.png") | |
with Image.load(input_file) as image: | |
image.save(output_file, PngOptions()) | |
return output_file | |
# run | |
median_filter() | |
Aspose.Imaging for Python API . के बारे में
Aspose.Imaging API अनुप्रयोगों के भीतर छवियों (फ़ोटो) को बनाने, संशोधित करने, आकर्षित करने या परिवर्तित करने के लिए एक छवि प्रसंस्करण समाधान है। यह प्रदान करता है: क्रॉस-प्लेटफ़ॉर्म छवि प्रसंस्करण, जिसमें विभिन्न छवि प्रारूपों (समान बहु-पृष्ठ या बहु-फ़्रेम छवि प्रसंस्करण सहित) के बीच रूपांतरण शामिल हैं, लेकिन इन्हीं तक सीमित नहीं है, ड्राइंग जैसे संशोधन, ग्राफिक प्राइमेटिव के साथ काम करना, परिवर्तन (आकार बदलना, फसल करना, फ्लिप करना और घुमाना) , बिनाराइज़ेशन, ग्रेस्केल, एडजस्ट), उन्नत छवि हेरफेर सुविधाएँ (फ़िल्टरिंग, डिथरिंग, मास्किंग, डेस्क्यूइंग), और मेमोरी ऑप्टिमाइज़ेशन रणनीतियाँ। यह एक स्टैंडअलोन लाइब्रेरी है और इमेज ऑपरेशंस के लिए किसी सॉफ्टवेयर पर निर्भर नहीं है। परियोजनाओं के भीतर देशी एपीआई के साथ आसानी से उच्च-प्रदर्शन छवि रूपांतरण सुविधाएँ जोड़ सकते हैं। ये 100% निजी ऑन-प्रिमाइसेस एपीआई हैं और छवियों को आपके सर्वर पर संसाधित किया जाता है।फ़िल्टर DICOMs ऑनलाइन ऐप के माध्यम से
हमारी लाइव डेमो वेबसाइट पर जाकर 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 या बाद के संस्करण हैं।
अधिक पढ़ेंअन्य समर्थित फ़िल्टर प्रारूप
Python का उपयोग करके, कोई भी व्यक्ति विभिन्न स्वरूपों को आसानी से फ़िल्टर कर सकता है, जिनमें शामिल हैं।