Преобразование изображения в черно-белое по сравнению с преобразованием изображения в моно chrome (уровни серого) в Python - PullRequest
1 голос
/ 16 апреля 2020

У меня есть изображение ниже filename = '1.png':

enter image description here

Всякий раз, когда я пытался преобразовать его в моно chrome, используя код ниже, изображение точно такое же, как входное изображение.

image_counter = 1
path = 'sample/' + str(image_counter) + '.png'
image = Image.open(path).convert('L')  # Convert it into monochrome.
image = Image.fromarray(image)
image.save('monochrome.png')  

Моно chrome Вывод:

enter image description here

Но когда я конвертирую это черно-белое изображение, результат отличается и дает не прямые границы.

image_counter = 1
path = 'sample/' + str(image_counter) + '.png'
image = Image.open(path).convert('1')  # Convert it into black and white.
image = Image.fromarray(image)
image.save('blackandwhite.png') 

enter image description here

При увеличении вы можете реально наблюдать не прямые границы.

enter image description here

Почему это так?

1 Ответ

2 голосов
/ 16 апреля 2020

Стандартный метод преобразования изображения в градациях серого («L») или «RGB» в двухуровневое (режим «1») изображение использует сглаживание Флойда-Стейнберга для аппроксимации яркости исходного изображения уровни. Если дизеринг равен NONE, все ненулевые значения устанавливаются на 255 (белый).

Метод дизеринга, используемый при преобразовании из режима «RGB» в «P» или из «RGB» или «L» в « 1” . Доступны следующие методы: NONE или FLOYDSTEINBERG (по умолчанию).

...