def __init__(self, data):
        self.Image = data.pixel_array
        self.BitsAllocated = data.BitsAllocated
        self.BitsStored = data.BitsStored
        self.floatImage = zeros(data.pixel_array.shape + (3, ), float)
        self.floatImage = scale(self.Image)
        self.PixelSpacing = data.PixelSpacing
        self.PixelArea = float(data.PixelSpacing[0]) * float(
            data.PixelSpacing[1])
        self.roi = zeros(data.pixel_array.shape + (3, ), int)
        self.image_dict = {'image': self.Image}

        try:
            self.PixelPresentation = data[0x2005, 0x140f][0][0x08,
                                                             0x9205].value
        except KeyError:
            self.PixelPresentation = 'Not included'

        try:
            self.AcquisitionContrast = data[0x2005, 0x140f][0][0x08,
                                                               0x9209].value
        except KeyError:
            self.AcquisitionContrast = data.SeriesDescription

        self.MagneticFieldStrength = int(data.MagneticFieldStrength)

        try:
            self.PulseSequenceName = data[0x2005, 0x140f][0][0x18,
                                                             0x9005].value
        except KeyError:
            self.PulseSequenceName = "Not included"

        try:
            self.SpectrallySelectedExcitation = data[0x2005,
                                                     0x140f][0][0x18,
                                                                0x9026].value
        except KeyError:
            self.SpectrallySelectedExcitation = 'Not included'

        try:
            self.StudyComments = data.StuddyComments
        except AttributeError:
            self.StudyComments = "No comments"
 def add_sp_noise(self, percentage=0.5):
     self.img_over = uint16(
         random_noise(
             scale(self.img), mode='s&p', salt_vs_pepper=percentage) *
         self.img.max())
 def psnr(self, img, p_img):
     emc = 1 / (img.shape[0] * img.shape[1]) * np.sum(
         (scale(img) - scale(p_img))**2)
     psnr = 10 * np.log10(1 / emc)
     return psnr
 def draw_line(self, point1, point2, color, thickness):
     for i in range(3):
         self.floatImage[:, :, i] = scale(self.Image)
     imgm = line(self.floatImage, point1, point2, color, thickness)
     return imgm