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 raKé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.tif0
Độ 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.tif1
hoặc
$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif2
Độ 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.tif3
sigma = 1
$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif4
sigma = 2
$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif5
sigma = 3
$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif6
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.tif7
Ngưỡng 112
$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif8
Ngưỡng 160
$ pystretch_test.py -srcwin 0 0 500 500 some_cool_image.tif9
Ngưỡng 232
$ pystretch_test.py -projwin ulx uly lrx lry input_image.img0
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.img1
Ngưỡng 88
$ pystretch_test.py -projwin ulx uly lrx lry input_image.img2
Ngưỡng 112
$ pystretch_test.py -projwin ulx uly lrx lry input_image.img3
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.img4
Gamma = 1. 2
$ pystretch_test.py -projwin ulx uly lrx lry input_image.img5
Gamma = 1. 6
$ pystretch_test.py -projwin ulx uly lrx lry input_image.img6
Gamma = 2. 0
$ pystretch_test.py -projwin ulx uly lrx lry input_image.img7
Gamma = 2. 4
$ pystretch_test.py -projwin ulx uly lrx lry input_image.img8
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.img9
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.img0
Cân bằng với 192 thùng
$ pystretch_test.py -projwin -1.25 -26.5 .25 -25.0 some_cool_image.img1
Độ 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.img2
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.img3
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.img4
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.img5
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.img6
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.img7
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.img8
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.img9
Bộ lọc gaussian với hạt nhân 5x5
$ pystretch_test.py -srcwin 775 58,225 500 500 LROC_NAC_Test_Image.tif0
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.tif1
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.tif2
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