Làm cách nào để kéo dài hình ảnh có độ tương phản trong python?

Người ta hình dung rằng đại đa số người dùng sẽ muốn sử dụng PyStretch thông qua một giao diện duy nhất; . py. Tập lệnh này cho phép truy cập vào chức năng của PyStretch mà không phải viết bất kỳ mã bổ sung nào

Cách đơn giản nhất để làm nổi bật cả cú pháp của pystretcher. py và cung cấp một ví dụ về đầu ra mà bạn có thể mong đợi với dữ liệu của mình thông qua một loạt hình ảnh mẫu và mã được gọi để tạo chúng. Tất cả các hình ảnh mẫu được tạo bằng pystretch_test. py và cách sử dụng tập lệnh đó sẽ được mô tả trước

Ghi chú

'1' được thêm vào trước hình ảnh gốc, đã cắt để đảm bảo rằng nó vẫn ở đầu thư mục hình ảnh thử nghiệm

Kiểm tra PyStretch¶

Trong khi thử nghiệm unittest đang được phát triển, tập lệnh này đã được đưa vào để cung cấp một công cụ mà người dùng có thể kiểm tra việc triển khai các thuật toán kéo dài và phân tích trên một tập hợp con dữ liệu của họ. Tập lệnh này lấy tọa độ [pixel hoặc hình chiếu] của một hình ảnh đầu vào được chỉ định, lặp lại qua mọi đoạn và bộ lọc có sẵn trong PyStretch và tạo hình thu nhỏ đầu ra

Để tạo một loạt hình thu nhỏ khi bạn biết vị trí pixel của một tính năng thú vị mà bạn muốn kiểm tra gói khi sử dụng

$ pystretch_test.py -srcwin origin_x origin_y width height your_input_image.tif

Ví dụ

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif

Điều này sẽ tạo ra một thư mục có tên là 'testimages' với hình ảnh gốc có tên là '1 original_cropped_image. tif'

Để tạo một loạt hình thu nhỏ khi bạn biết tọa độ dự kiến ​​của một tính năng thú vị mà bạn muốn kiểm tra gói khi sử dụng

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img

Ví dụ

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img

Ghi chú

Trên MacBookPro lõi kép, thử nghiệm này, khi tạo hình thu nhỏ 500 x 500 pixel cần dưới 10 giây. [đầu vào 8 bit]

Đầu ra mẫu¶

Dưới đây là kết quả từ một lần chạy pystretch_test. py trên Hình ảnh LROC NAC về Mặt trăng của Trái đất. Hình ảnh gốc là một Geotiff 1GB dài hơn 65.000 pixel và rộng 5.000 pixel. Thử nghiệm này được thực hiện bằng cách sử dụng

$ pystretch_test.py -srcwin 775 58,225 500 500 LROC_NAC_Test_Image.tif

Hình ảnh đã cắt gốc¶

Kéo dài tuyến tính¶

Độ tương phản tuyến tính kéo dài ánh xạ lại các giá trị pixel đầu vào bằng thuật toán tuyến tính. y= mx+b hoặc một số biến thể của y = mx+b

Kéo dài tương phản tuyến tính¶

Độ giãn tương phản tuyến tính ánh xạ lại các giá trị pixel từ [IMin , IMax] thành [JNewMin , JNewMax ], trong đó. I là hình ảnh đầu vào với phạm vi giá trị từ tối thiểu đến tối đa và J là hình ảnh đầu ra với phạm vi mới được tính toán. Phạm vi mới này dựa trên các giá trị tối thiểu và tối đa của định dạng dữ liệu. Mức tối thiểu và tối đa mới có thể được sửa đổi bằng một clip tỷ lệ phần trăm, clip này sẽ cắt các phần đuôi của biểu đồ đầu ra

Kéo dài đến tối thiểu / tối đa

$ pystretcher.py -l 

Với một clip 2%

$ pystretcher.py --linear --clip 2 

Với clip 30%

$ pystretcher.py --linear --clip 30

Kéo dài độ tương phản nhị phân¶

Độ giãn tương phản nhị phân lấy một giá trị trục đầu vào và ánh xạ tất cả các pixel lớn hơn hoặc bằng giá trị đó sang định dạng mac và tất cả các pixel nhỏ hơn giá trị đó sang dải tối thiểu. Điều này có thể được thể hiện như

Px,y< Pivot = Định dạng_Tối thiểu,

Px,y>= Pivot = Format_Maximum

Trong trường hợp sử dụng này, phần kéo dài thực hiện công việc khá tốt trong việc xác định bóng của tảng đá và mặt tảng đá được chiếu sáng

Giá trị xoay vòng 64

________số 8

Giá trị xoay vòng 128

$ pystretcher.py -y --th 128 

Giá trị xoay vòng 192

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
0

Độ tương phản nghịch đảo¶

Độ giãn tương phản ngược ánh xạ lại biểu đồ đầu vào thành nghịch đảo của nó bằng cách sử dụng

Bĩu môi = giá_trị_tuyệt_đối[ Px,y- inputmaximum]

Cách sử dụng

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
1

hoặc

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
2

Độ lệch chuẩn¶

Độ lệch chuẩn hoạt động giống như độ giãn tuyến tính. Các giá trị pixel đầu vào được ánh xạ lại trong một số độ lệch chuẩn do người dùng xác định [Sigma hoặc n] của giá trị trung bình của hình ảnh đầu vào

sigma = 0. 5

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
3

sigma = 1

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
4

sigma = 2

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
5

sigma = 3

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
6

Co giãn cao¶

Độ căng cắt cao ánh xạ tất cả các giá trị lớn hơn ngưỡng được cung cấp thành giá trị cắt do người dùng xác định. Giá trị cắt mặc định, nếu bạn không muốn cung cấp giá trị này là 0

Điều này có thể được thể hiện như

nếu Bĩu môi > ngưỡng. Bĩu môi = CutValueelse. Bĩu môi = Ghim

trong đó, P là giá trị pixel tại một số tọa độ x, y

Ngưỡng 64

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
7

Ngưỡng 112

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
8

Ngưỡng 160

$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif
9

Ngưỡng 232

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
0

Kéo dài cắt thấp¶

Độ giãn cắt thấp ánh xạ tất cả các giá trị nhỏ hơn ngưỡng được cung cấp thành giá trị cắt do người dùng xác định. Giá trị cắt mặc định, nếu bạn không muốn cung cấp giá trị này là 0

Điều này có thể được thể hiện như

nếu Bĩu môi < ngưỡng. Bĩu môi = CutValueelse. Bĩu môi = Ghim

trong đó, P là giá trị pixel tại một số tọa độ x, y

Độ giãn này là tuyệt vời khi nhiễu bị hạn chế ở các phần cao hoặc thấp [giá trị pixel] của hình ảnh và bạn muốn loại bỏ có chọn lọc để cải thiện phân tích một số tính năng

Ngưỡng 64

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
1

Ngưỡng 88

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
2

Ngưỡng 112

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
3

Kéo dài phi tuyến tính¶

Độ tương phản tuyến tính kéo dài ánh xạ lại các giá trị pixel đầu vào theo kiểu phi tuyến tính. Đó là các pixel được ánh xạ bằng cách sử dụng một số hàm khác với y=mx+b hoặc đạo hàm của y=mx+b

Gamma Stretch¶

Dải gamma ánh xạ lại các pixel bằng phương trình

POut= Px,y^gamma

Độ giãn này thường được sử dụng để làm sáng hoặc làm tối toàn bộ hình ảnh khi các đối tượng được phơi sáng quá mức hoặc dưới

Gamma = 0. 8

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
4

Gamma = 1. 2

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
5

Gamma = 1. 6

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
6

Gamma = 2. 0

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
7

Gamma = 2. 4

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
8

Biểu đồ cân bằng¶

Cân bằng biểu đồ cố gắng điền vào số lượng ngăn do người dùng xác định với số lượng giá trị pixel bằng nhau, được phân phối trên toàn bộ biểu đồ. Khi trực quan hóa biểu đồ đầu ra, đừng mong đợi nhìn thấy biểu đồ phẳng, thay vào đó bạn sẽ thấy hàm phân phối tích lũy tuyến tính

Cân bằng biểu đồ đòi hỏi cả bộ xử lý và RAM. Thuật toán này chưa được tối ưu hóa ngoài việc tối ưu hóa vốn có mà nhóm scipy đã thực hiện trong quá trình tạo dữ liệu và nội suy mảng

Cân bằng với 64 thùng

$ pystretch_test.py -projwin ulx uly lrx lry input_image.img
9

Cân bằng với 128 thùng [mặc định]

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
0

Cân bằng với 192 thùng

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
1

Độ giãn logarit¶

Chúng tôi đã triển khai thử nghiệm kéo dài logarit [hữu ích chủ yếu cho dữ liệu radar] mà chưa trải qua quá trình thử nghiệm đầy đủ. Vui lòng cung cấp phản hồi nếu bạn sử dụng đoạn này qua trang github của chúng tôi hoặc bằng cách liên hệ trực tiếp với tác giả

Đoạn logarit có thể được gọi bằng cách sử dụng

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
2

Thuật toán hiện đang được triển khai là

tỷ lệ_factor = 255/[log10[1+abs[PMax]]]

POut= Scaling_factor * log10[epsilon + abs[Px,y]

Bộ lọc¶

Các bộ lọc thay đổi hình ảnh đầu vào bằng cách tương quan hoặc kết hợp pixel đầu vào bằng cách sử dụng một số hạt nhân chỉ định trọng số vùng lân cận mà theo đó pixel trung tâm sẽ được sửa đổi. Theo truyền thống, các quá trình xử lý này cực kỳ tốn nhiều công sức của bộ xử lý vì mỗi giá trị trong một mảng đầu vào phải được lặp đi lặp lại và sửa đổi. Chúng tôi đã thấy mức tăng tốc độ lớn nhất khi sử dụng các bộ lọc trong môi trường đa xử lý

Bộ lọc Laplacian¶

Bộ lọc laplacian là bộ lọc phát hiện cạnh

Bộ lọc Laplacian với hạt nhân 3x3

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
3

Bộ lọc Laplacian với hạt nhân 5x5

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
4

Bộ lọc Thông cao [Hạt nhân 3x3]¶

Bộ lọc thông cao phục vụ để làm sắc nét hình ảnh đầu vào, chủ yếu bằng cách làm sáng pixel đầu vào so với các pixel xung quanh. Điều này được thực hiện bằng cách tính trọng số cho pixel đầu vào, tính trọng số âm cho vùng lân cận và kết hợp hạt nhân thành mảng. PyStretch mã cứng hạt nhân thông cao

Bộ lọc thông cao với nhân 3x3

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
5

Bộ lọc Thông cao [Hạt nhân 5x5]¶

Bộ lọc thông cao phục vụ để làm sắc nét hình ảnh đầu vào, chủ yếu bằng cách làm sáng pixel đầu vào so với các pixel xung quanh. Điều này được thực hiện bằng cách tính trọng số cho pixel đầu vào, tính trọng số âm cho vùng lân cận và kết hợp hạt nhân thành mảng. PyStretch mã cứng hạt nhân thông cao

Bộ lọc thông cao với hạt nhân 5x5

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
6

Bộ lọc Gaussian¶

Bộ lọc gaussian là bộ lọc làm mờ

Bộ lọc Gaussian với hạt nhân 3x3

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
7

Bộ lọc gaussian với hạt nhân 5x5

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
8

Bộ lọc thông cao Gaussian¶

Bộ lọc đường cao gaussian là một ví dụ về bộ lọc phát hiện cạnh

Bộ lọc Gaussian với hạt nhân 3x3

$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img
9

Bộ lọc gaussian với hạt nhân 5x5

$ pystretch_test.py -srcwin 775 58,225 500 500 LROC_NAC_Test_Image.tif
0

Bộ lọc trung bình¶

Bộ lọc trung bình lấy giá trị trung bình của vùng lân cận và áp dụng nó cho pixel đầu vào

Bộ lọc trung bình với hạt nhân 3x3

$ pystretch_test.py -srcwin 775 58,225 500 500 LROC_NAC_Test_Image.tif
1

Bộ lọc trung bình với hạt nhân 5x5

$ pystretch_test.py -srcwin 775 58,225 500 500 LROC_NAC_Test_Image.tif
2

Bộ lọc bảo thủ¶

Bộ lọc thận trọng kiểm tra xem pixel đầu vào có phải là ngoại lệ đối với vùng lân cận hay không [lớn hơn hoặc nhỏ hơn một vùng lân cận]. Nếu đúng như vậy, giá trị pixel được ánh xạ lại thành giá trị gần nhất trong vùng lân cận. Đây là một bộ lọc tốt để kiểm tra nhiễu hạt tiêu trong khi cố gắng giữ lại chi tiết

Lệnh kéo dài tương phản là gì?

Mô tả. lowhigh = stretchlim[ I ] tính toán các giới hạn dưới và trên có thể được sử dụng để kéo dài độ tương phản cho hình ảnh thang độ xám hoặc RGB I. Các giới hạn được trả về ở mức thấp. Theo mặc định, các giới hạn chỉ định 1% dưới cùng và 1% trên cùng của tất cả các giá trị pixel.

Điều gì có nghĩa là kéo dài độ tương phản của một hình ảnh?

Kéo dài độ tương phản [thường được gọi là chuẩn hóa] là một kỹ thuật nâng cao hình ảnh đơn giản cố gắng cải thiện độ tương phản trong ảnh bằng cách 'kéo dài' phạm vi giá trị cường độ mà nó chứa để mở rộng phạm vi giá trị mong muốn, toàn bộ phạm vi giá trị pixel mà hình ảnh

Làm thế nào có thể đạt được độ tương phản kéo dài và ngưỡng?

Sau n lần áp dụng lặp đi lặp lại chức năng biến đổi kéo dài độ tương phản, trên một ảnh đầu vào ta thu được một ảnh chỉ có hai cấp độ xám. '0' và '255'. Đây là một hình ảnh nhị phân. Trong trường hợp khi Ngưỡng được áp dụng một lần cho hình ảnh đầu vào, nó sẽ cung cấp Hình ảnh đầu ra nhị phân .

Kéo dài trong Python là gì?

stretch là công cụ dòng lệnh sử dụng PBKDF2 từ mật khẩu của Python để lấy khóa, được cung cấp một bí mật và muối .

Chủ Đề