찾다
백엔드 개발파이썬 튜토리얼Python 기반의 이미지 향상 기술

몇 가지 이론적 용어로 이 튜토리얼을 시작하겠습니다. 이미지 향상에 관해 이야기할 때 이는 기본적으로 원본 이미지보다 더 적합한 새 버전의 이미지를 원한다는 의미입니다.

예를 들어 문서를 스캔할 때 출력 이미지의 품질이 원본 입력 이미지보다 낮을 수 있습니다. 따라서 출력 이미지의 품질을 향상시켜 보는 사람이 시각적으로 더 잘 표현할 수 있도록 하는 방법이 필요하며, 여기서 이미지 향상이 중요합니다. 이미지를 향상할 때 우리가 하는 일은 대비나 가장자리와 같은 이미지의 특징을 선명하게 하는 것입니다.

이미지 향상은 이미지의 정보 내용을 늘리는 것이 아니라 선택한 특징의 동적 범위를 늘려 궁극적으로 이미지 품질을 향상시킨다는 점에 유의해야 합니다. 따라서 여기서 우리는 실제로 출력 이미지가 어떻게 보일지 알 수 없지만 출력 이미지에서 더 자세한 내용을 관찰하는 등 개선 사항이 있는지 (주관적으로) 알 수 있어야 합니다.

이미지 향상은 디지털 이미지 처리(예: 분할, 표현)와 관련된 기본 단계 중 전처리 단계로 자주 사용됩니다. 이미지 향상을 위한 많은 기술이 있지만 이 튜토리얼에서는 Image InversePower Law Transformation이라는 두 가지 기술을 다루겠습니다. Python에서 이를 구현하는 방법을 살펴보겠습니다. 시작하자!

이미지 반전

이 섹션(이미지 반전이라고도 함)의 제목에서 짐작할 수 있듯이 이미지 반전의 목적은 입력 이미지의 어두운 강도를 이미지의 밝은 강도로 변환하는 것입니다. 출력 이미지의 밝은 강도와 ​​입력 이미지의 밝은 강도를 출력 이미지의 어두운 강도로 변환합니다. 즉, 어두운 부분은 더 밝아지고 밝은 부분은 더 어두워집니다.

I(i,j) 指的是位于 (i,j) 处的像素的强度值。这里澄清一下,灰度图像中的强度值落在 [0,255] 范围内,而 (i,j) 指的是行和列值, 分别。当我们对灰度图像应用图像逆运算符时,输出像素 O(i,j) 값은 다음과 같다고 가정합니다.

으아아아

이제 대부분의 이미지는 컬러입니다. 이러한 이미지에는 red, greenblue의 세 가지 채널이 포함되어 있으며 RGB 이미지라고 합니다. 이 경우 위 공식과 반대로 255에서 각 RGB 图像。在这种情况下,与上面的公式相反,我们需要从 255 中减去每个通道的强度。因此输出图像在像素 (i ,j) 채널의 강도를 빼야 합니다. 따라서 출력 이미지는 픽셀 단위입니다. (i ,j):

으아아아

소개에 이어 Python에서 이미지 역연산자를 구현하는 방법을 살펴보겠습니다. 단순화를 위해 이 연산자를 회색조 이미지에서 실행할 것임을 언급하고 싶습니다. 하지만 컬러 이미지에 이 연산자를 적용하는 방법에 대한 몇 가지 아이디어를 제공하고 전체 프로그램은 연습용으로 남겨 두겠습니다.

컬러 이미지의 경우 가장 먼저 해야 할 일은 각 픽셀 채널(예: RGB) 강도 값을 추출하는 것입니다. 이를 위해 PIL(Python Imaging Library)을 사용할 수 있습니다. 계속해서 baboon.png에서 샘플 개코원숭이 이미지를 다운로드하세요. 이미지의 크기는 500x500。假设您要提取位于像素位置 (325, 432) 의 빨간색, 녹색, 파란색 강도 값입니다. 이는 다음과 같이 수행할 수 있습니다:

으아아아

문서에 따르면 getpixel() 메소드는 다음을 수행합니다.

주어진 위치의 픽셀 값을 반환합니다.

위 스크립트를 실행하면 다음 결과만 얻을 수 있습니다. 138!但是三个通道的 (RGB) 强度值在哪里?问题似乎与正在读取的图像的 mode 정보. 다음 명령문을 실행하여 패턴을 확인하십시오.

으아아아

다음과 같은 P,这意味着图像是在调色板模式下读取的。您可以做的一件事是在返回不同通道的强度值之前将图像转换为 RGB 模式。为此,您可以使用 convert() 메소드의 출력을 얻게 됩니다.

으아아아

이 경우 다음과 같은 반환 값을 얻게 됩니다: (180, 168, 178). 이는 빨간색, 녹색, 파란색 채널의 강도 값이 각각 180, 168, 178임을 의미합니다.

지금까지 설명한 모든 내용을 종합하면 이미지의 RGB 값을 반환하는 Python 스크립트는 다음과 같습니다.

으아아아

이미지 역연산자로 넘어가기 전에 한 점이 더 남았습니다. 위의 예는 단 하나의 픽셀에 대한 RGB 값을 검색하는 방법을 보여 주지만 역연산을 수행할 때는 모든 픽셀에 대해 수행해야 합니다.

각 픽셀에 대해 서로 다른 채널의 모든 강도 값을 인쇄하려면 다음을 수행할 수 있습니다.

으아아아

이 시점에서는 각 픽셀의 모든 컬러 이미지 채널(예: RGB)에 이미지 역연산자를 적용하는 방법을 알아보기 위한 연습으로 남겨두겠습니다.

회색조 이미지에 이미지 역연산자를 적용하는 예를 살펴보겠습니다. 이 섹션에서 테스트 이미지 역할을 할 boat.png를 다운로드하세요. 다음과 같습니다:

Python 기반의 이미지 향상 기술

我将使用 numpy 库来完成此任务。在上面的图像上应用图像逆运算符的 Python 脚本应如下所示:

import cv2
import numpy as np
from PIL import Image
img = Image.open('boat.png')
array_img = np.array(img)
image_invert = np.invert(array_img)
cv2.imwrite('new_boat.jpg', image_invert)

Numpy 是一个用于使用 Python 进行科学计算的 Python 包。 OpenCV-Python 是一个旨在解决计算机视觉问题的库。 OpenCV-Python 与 numpy 捆绑在一起,因此如果先安装 OpenCV-Python,则无需安装 numpy。我们首先用 Pillow 打开图像,然后将其转换为 numpy 数组。

然后我们使用numpy的invert()函数将图像反转并保存新的反转图像。 invert() 函数会将白色转换为黑色,反之亦然。

下面左边是原始图像,右边是新反转的图像。

Python 기반의 이미지 향상 기술

请注意,应用该运算符后,图像的某些特征变得更加清晰。例如,看看右侧图像中的云彩和灯塔。

幂律变换

这个算子,也称为伽马校正,是我们可以用来增强图像的另一个算子。让我们看看算子方程。在像素 (i,j) 处,运算符如下所示:

p(i,j) = kI(i,j)^gamma

I(i,j) 是图像位置处的强度值 (i,j); kgamma 是正常数。我不会在这里讨论数学细节,但我相信您可以在图像处理书籍中找到该主题的详尽解释。但需要注意的是,在大多数情况下,k=1,所以我们主要是改变gamma的值。因此,上述方程可以简化为:

p(i,j) = I(i,j)^gamma

我将在这里使用 OpenCVNumPy 库。如果您需要了解有关该库的更多信息,请查看我的教程 NumPy 简介。我们的测试图像将再次是boat.tiff(继续下载它)。

执行幂律变换运算符的 Python 脚本如下所示:

import cv2
import numpy as np

im = cv2.imread('boat.tiff')
im = im/255.0
im_power_law_transformation = cv2.pow(im,0.6)
cv2.imshow('Original Image',im)
cv2.imshow('Power Law Transformation',im_power_law_transformation)
cv2.waitKey(0)

请注意,我们选择的 gamma 值是 0.6。下图显示了原始图像以及对该图像应用幂律变换算子的结果(左图为原始图像,右图为应用幂律变换算子后的结果)。

Python 기반의 이미지 향상 기술

上面的结果是 gamma = 0.6 时的结果。让我们看看当我们将 gamma 增加到 1.5 时会发生什么,例如:

Python 기반의 이미지 향상 기술

请注意,当我们增加伽马值时,图像会变得更暗,反之亦然。

您可能会问幂律变换有什么用处。事实上,用于图像采集、打印和显示的不同设备根据幂律变换算子进行响应。这是因为人脑使用伽马校正来处理图像。例如,当我们希望在计算机显示器或电视屏幕上正确显示图像(所有图像中显示最佳图像对比度)时,伽马校正就被认为很重要。

结论

在本教程中,您学习了如何使用 Python 增强图像。您已经了解了如何使用图像逆算子突出显示特征,以及如何将幂律变换视为在计算机显示器和电视屏幕上正确显示图像的关键算子。

위 내용은 Python 기반의 이미지 향상 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬의 주요 목적 : 유연성과 사용 편의성파이썬의 주요 목적 : 유연성과 사용 편의성Apr 17, 2025 am 12:14 AM

Python의 유연성은 다중 파리가 지원 및 동적 유형 시스템에 반영되며, 사용 편의성은 간단한 구문 및 풍부한 표준 라이브러리에서 나옵니다. 유연성 : 객체 지향, 기능 및 절차 프로그래밍을 지원하며 동적 유형 시스템은 개발 효율성을 향상시킵니다. 2. 사용 편의성 : 문법은 자연 언어에 가깝고 표준 라이브러리는 광범위한 기능을 다루며 개발 프로세스를 단순화합니다.

파이썬 : 다목적 프로그래밍의 힘파이썬 : 다목적 프로그래밍의 힘Apr 17, 2025 am 12:09 AM

Python은 초보자부터 고급 개발자에 이르기까지 모든 요구에 적합한 단순성과 힘에 호의적입니다. 다목적 성은 다음과 같이 반영됩니다. 1) 배우고 사용하기 쉽고 간단한 구문; 2) Numpy, Pandas 등과 같은 풍부한 라이브러리 및 프레임 워크; 3) 다양한 운영 체제에서 실행할 수있는 크로스 플랫폼 지원; 4) 작업 효율성을 향상시키기위한 스크립팅 및 자동화 작업에 적합합니다.

하루 2 시간 안에 파이썬 학습 : 실용 가이드하루 2 시간 안에 파이썬 학습 : 실용 가이드Apr 17, 2025 am 12:05 AM

예, 하루에 2 시간 후에 파이썬을 배우십시오. 1. 합리적인 학습 계획 개발, 2. 올바른 학습 자원을 선택하십시오. 3. 실습을 통해 학습 된 지식을 통합하십시오. 이 단계는 짧은 시간 안에 Python을 마스터하는 데 도움이 될 수 있습니다.

Python vs. C : 개발자를위한 장단점Python vs. C : 개발자를위한 장단점Apr 17, 2025 am 12:04 AM

Python은 빠른 개발 및 데이터 처리에 적합한 반면 C는 고성능 및 기본 제어에 적합합니다. 1) Python은 간결한 구문과 함께 사용하기 쉽고 데이터 과학 및 웹 개발에 적합합니다. 2) C는 고성능과 정확한 제어를 가지고 있으며 게임 및 시스템 프로그래밍에 종종 사용됩니다.

파이썬 : 시간 약속과 학습 속도파이썬 : 시간 약속과 학습 속도Apr 17, 2025 am 12:03 AM

Python을 배우는 데 필요한 시간은 개인마다 다릅니다. 주로 이전 프로그래밍 경험, 학습 동기 부여, 학습 리소스 및 방법 및 학습 리듬의 영향을받습니다. 실질적인 학습 목표를 설정하고 실용적인 프로젝트를 통해 최선을 다하십시오.

파이썬 : 자동화, 스크립팅 및 작업 관리파이썬 : 자동화, 스크립팅 및 작업 관리Apr 16, 2025 am 12:14 AM

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

파이썬과 시간 : 공부 시간을 최대한 활용파이썬과 시간 : 공부 시간을 최대한 활용Apr 14, 2025 am 12:02 AM

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

파이썬 : 게임, Guis 등파이썬 : 게임, Guis 등Apr 13, 2025 am 12:14 AM

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기