Hướng dẫn logarithmic transformation image python - Python hình ảnh biến đổi logarit

c = 255/log (1+giá trị pixel tối đa từ hình ảnh đầu vào).

Nội phân chính

  • Chuyển đổi nhật ký
  • Chuyển đổi nhật ký làm gì với một hình ảnh?
  • Làm thế nào để bạn thực hiện chuyển đổi nhật ký trong Python?
  • Làm thế nào để bạn biến đổi một hình ảnh trong Python?
  • Làm thế nào chức năng chuyển đổi nhật ký có thể được sử dụng để thay đổi giá trị cường độ của pixel?

#----- ví dụ Chương trình Python để chuyển đổi logarit của hình ảnh kỹ thuật số -----

# Nhập các mô -đun gối

Từ hình ảnh nhập khẩu PIL

Từ PIL Nhập hình ảnhfilter

Nhập toán

# Tính nhật ký

def logtransform (c, f):

& nbsp; & nbsp; & nbsp; g = c * math.log (float (1 + f), 10);

& nbsp; & nbsp; & nbsp; trả lại g;

# Áp dụng chuyển đổi logarit cho một hình ảnh & nbsp; & nbsp;

Def LogTransformImage (Image, OutputMax = 255, InputMax = 255):

& nbsp; & nbsp; & nbsp; c = outputMax/math.log (inputMax+1,10);

& nbsp; & nbsp; & nbsp; # Đọc pixel và áp dụng chuyển đổi logarit

& nbsp; & nbsp; & nbsp; Đối với i trong phạm vi (0, img.size [0] -1):

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; cho J trong phạm vi (0, img.size [1] -1):

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Nhận giá trị pixel tại vị trí (x, y) của hình ảnh

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; f = img.getPixel ((i, j));

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Làm chuyển đổi nhật ký của pixel

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; redpixel & nbsp; & nbsp; & nbsp; = vòng (logtransform (c, f [0]));

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; GreenPixel & NBSP; = vòng (logtransform (c, f [1]));

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; BluePixel & nbsp; & nbsp; = vòng (logtransform (c, f [2]));

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Sửa đổi hình ảnh bằng các giá trị pixel được chuyển đổi

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; img.putpixel ((i, j), (redpixel, greenpixel, cluepixel));

& nbsp; & nbsp; & nbsp; trở lại hình ảnh;

# Hiển thị hình ảnh gốc

ImageFilename = "Forest.jpg";

img = Image.open (ImageFileName);

img.show();

# Hiển thị hình ảnh sau khi áp dụng chuyển đổi logarit

logTransformedImage = logTransformImage (IMG);

logTransformedImage.show();

Trong hình ảnh ban đầu, các cây tối hơn và một vùng nhỏ của một luồng hoặc một đường dẫn không thể nhìn thấy. Nhiều cây cũng không rõ ràng là visibile.

Hình ảnh chuyển đổi logarit có hầu hết các cây có thể nhìn thấy rõ. Tuy nhiên, tuyết nền tương ứng với các pixel sáng nhất (không phải tuyết nền trước) chủ yếu giống nhau trong cả hai hình ảnh. & NBSP;

Giá trị logarit của một số là một số tăng sức mạnh cho số cơ sở cho cùng số với đầu vào. Đơn giản, logarit là sự đảo ngược của giá trị theo cấp số nhân của một số.

log(exp(x)) = x

Giá trị nhật ký của một số được tính toán như thế nào?

Hãy để xem một ví dụ,

Hướng dẫn logarithmic transformation image python - Python hình ảnh biến đổi logarit

Bằng cách áp dụng logarit ở cả hai phía,

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)

Chúng tôi biết, giá trị của một số có nguồn 0 bằng 1. Vì vậy,

log1 = 0 

log0 = infinity

Chúng ta có thể tìm thấy giá trị nhật ký của một số bằng cách sử dụng Python như sau:

import numpy as np

a ____10

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
1
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
2
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
3
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
4

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
5
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
2
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
7
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
8

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
9
log1 = 0 
0

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
5
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
2
log1 = 0 
3
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
8

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
9
log1 = 0 
6

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
5
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
2
log1 = 0 
9
log0 = infinity
0

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
9
log0 = infinity
2

Examples:

Input : 8
Output : 
Natural log value of the input number is 2.0794415416798357
Log value of the number with base 2 is 3.0
Log value of the number with base 10 is 0.9030899869919435

Input : 255
Output : 
Natural log value of the input number is 5.541263545158426
Log value of the number with base 2 is 7.994353436858858
Log value of the number with base 10 is 2.406540180433955

Lưu ý: Bạn có thể thấy chức năng nhật ký trong Python bằng cách truy cập tại đây. You can see log function in Python by visiting here.

Chuyển đổi nhật ký

Chuyển đổi logarit của một hình ảnh là một trong những biến đổi hình ảnh cấp màu xám. Chuyển đổi nhật ký của một hình ảnh có nghĩa là thay thế tất cả các giá trị pixel, có trong hình ảnh, với các giá trị logarit của nó. Chuyển đổi nhật ký được sử dụng để tăng cường hình ảnh khi nó mở rộng các pixel tối của hình ảnh so với các giá trị pixel cao hơn.

Công thức áp dụng chuyển đổi nhật ký trong một hình ảnh là,

S = c * log (1 + r)

where,
R = input pixel value,
C = scaling constant and
S = output pixel value

Giá trị của ‘C, được chọn sao cho chúng tôi nhận được giá trị đầu ra tối đa tương ứng với kích thước bit được sử dụng. Vì vậy, công thức tính toán ‘C, như sau:

c = 255 / (log (1 + max_input_pixel_value))

Khi chúng tôi áp dụng chuyển đổi nhật ký trong một hình ảnh và bất kỳ giá trị pixel nào là ‘0, thì giá trị nhật ký của nó sẽ trở nên vô hạn. Đó là lý do tại sao chúng tôi thêm ‘1, vào mỗi giá trị pixel tại thời điểm chuyển đổi nhật ký để nếu bất kỳ giá trị pixel nào là‘ 0, nó sẽ trở thành ‘1 và giá trị nhật ký của nó sẽ là‘ 0.

Hãy để áp dụng chuyển đổi nhật ký trong một hình ảnh bằng Python.

Tệp đầu vào -

import

log0 = infinity
4

import numpy as np

a ____10

log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
1
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
2
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
3
log(2^3) = log(8)
3 * log(2) = log(8)
3 = log(8) / log(2)
Log(8) = 3 (base is 2)
4

Lưu ý: Bạn có thể thấy chức năng nhật ký trong Python bằng cách truy cập tại đây.

Chuyển đổi logarit của một hình ảnh là một trong những biến đổi hình ảnh cấp màu xám. Chuyển đổi nhật ký của một hình ảnh có nghĩa là thay thế tất cả các giá trị pixel, có trong hình ảnh, với các giá trị logarit của nó. Chuyển đổi nhật ký được sử dụng để tăng cường hình ảnh khi nó mở rộng các pixel tối của hình ảnh so với các giá trị pixel cao hơn.

Công thức áp dụng chuyển đổi nhật ký trong một hình ảnh là,

Giá trị của ‘C, được chọn sao cho chúng tôi nhận được giá trị đầu ra tối đa tương ứng với kích thước bit được sử dụng. Vì vậy, công thức tính toán ‘C, như sau:

c = 255 / (log (1 + max_input_pixel_value))
7

c = 255 / (log (1 + max_input_pixel_value))
8

c = 255 / (log (1 + max_input_pixel_value))
9

c = 255 / (log (1 + max_input_pixel_value))
8

Đầu ra:

Chuyển đổi nhật ký của cung cấp thông tin thực tế bằng cách tăng cường hình ảnh. Nếu chúng ta áp dụng phương pháp này trong một hình ảnh có giá trị pixel cao hơn thì nó sẽ tăng cường hình ảnh nhiều hơn và thông tin thực tế của hình ảnh sẽ bị mất. Vì vậy, phương pháp này có thể được áp dụng ở mọi nơi. Nó có thể được áp dụng trong hình ảnh trong đó các giá trị pixel thấp nhiều hơn các giá trị cao hơn.


Chuyển đổi nhật ký làm gì với một hình ảnh?

Chuyển đổi nhật ký của một hình ảnh có nghĩa là thay thế tất cả các giá trị pixel, có trong hình ảnh, với các giá trị logarit của nó. Chuyển đổi nhật ký được sử dụng để tăng cường hình ảnh khi nó mở rộng các pixel tối của hình ảnh so với các giá trị pixel cao hơn.replacing all pixel values, present in the image, with its logarithmic values. Log transformation is used for image enhancement as it expands dark pixels of the image as compared to higher pixel values.

Làm thế nào để bạn thực hiện chuyển đổi nhật ký trong Python?

Chuyển đổi nhật ký và thay đổi chỉ mục trong Python..

Áp dụng nhật ký cho mỗi biến cột ..

Đặt tên cho biến mới được tạo này, "log_varable". ....

Do log (biến_value +1) cho các giá trị trong các cột DF [biến] bằng không hoặc thiếu, để tránh nhận được "-inf" được trả về ..

Tìm chỉ mục của biến gốc ..

Làm thế nào để bạn biến đổi một hình ảnh trong Python?

Thí dụ:..

# Nhập thư viện xử lý hình ảnh Python ..

Từ hình ảnh nhập khẩu PIL ..

# Tạo một đối tượng hình ảnh từ một hình ảnh ..

colorimage = Image.open ("./ effil.jpg").

# Xoay nó 45 độ ..

xoay = colorimage.rotate (45).

# Xoay nó bằng 90 độ ..

hoán vị = colorimage.transpose (Image.rotate_90).

Làm thế nào chức năng chuyển đổi nhật ký có thể được sử dụng để thay đổi giá trị cường độ của pixel?

Chuyển đổi nhật ký s = c log (r + 1). Trong đó s và r là các giá trị pixel của đầu ra và hình ảnh đầu vào và C là một hằng số. Giá trị 1 được thêm vào mỗi giá trị pixel của hình ảnh đầu vào vì nếu có cường độ pixel là 0 trong hình ảnh, thì log (0) bằng vô cực.s = c log(r + 1). Where s and r are the pixel values of the output and the input image and c is a constant. The value 1 is added to each of the pixel value of the input image because if there is a pixel intensity of 0 in the image, then log (0) is equal to infinity.