Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để tìm giá trị trung bình trên các kênh hình ảnh trong PyTorch?

Hình ảnh RGB có ba kênh, Đỏ, Xanh lục và Xanh lam. Chúng tôi cần tính giá trị trung bình của các giá trị pixel hình ảnh trên các kênh hình ảnh này. Với mục đích này, chúng tôi sử dụng phương thức torch.mean () . Nhưng tham số đầu vào của phương thức này là một tenxơ PyTorch. Vì vậy, trước tiên chúng ta chuyển đổi hình ảnh sang tensor PyTorch và sau đó áp dụng phương pháp này. Nó trả về giá trị trung bình của tất cả các phần tử trong tensor. Để tìm giá trị trung bình trên các kênh hình ảnh, chúng tôi đặt thông số dim =[1,2] .

Các bước

  • Nhập thư viện được yêu cầu. Trong tất cả các ví dụ Python sau, các thư viện Python bắt buộc là torch, torchvision, Pillow OpenCV . Đảm bảo rằng bạn đã cài đặt chúng.

  • Đọc hình ảnh đầu vào bằng image.open () và gán nó cho một biến "img" .

  • Xác định một phép biến đổi để chuyển đổi hình ảnh PIL thành PyTorch Tensor

  • Chuyển đổi hình ảnh " img "thành tensor PyTorch bằng cách sử dụng biến đổi được xác định ở trên và gán tensor này cho " imgTensor " .

  • Tính toán torch.mean (imgTensor, dim =[1,2]) . Nó trả về một hàng chục của ba giá trị. Ba giá trị này là giá trị trung bình cho ba kênh RGB. Bạn có thể chỉ định riêng ba giá trị trung bình này cho ba biến mới "R_mean", "G_mean" "B_mean" .

  • In ba giá trị trung bình "R_mean", "G_mean", "B_mean" của pixel hình ảnh.

Hình ảnh đầu vào

Chúng tôi sẽ sử dụng hình ảnh sau làm đầu vào trong cả hai ví dụ.

Làm cách nào để tìm giá trị trung bình trên các kênh hình ảnh trong PyTorch?

Ví dụ 1

 # Chương trình Python để tìm giá trị trung bình trên các kênh hình ảnh # nhập các thư viện cần thiết nhập torchf từ PIL nhập Imageimport torchvision.transforms dưới dạng các phép biến đổi # Đọc đầu vào imageimg =Image.open ('opera.jpg') # Xác định phép biến đổi để chuyển đổi hình ảnh thành PyTorch Tensortransform =biến đổi.ToTensor () # Chuyển đổi hình ảnh thành PyTorch Tensor (Độ căng hình ảnh) imgTensor =biến đổi (img) print ("Shape of Image Tensor:\ n", imgTensor.shape) # Tính giá trị trung bình của Image Tensor trên các kênh hình ảnh RGBR_mean, G_mean, B_mean =torch.mean (imgTensor, dim =[1,2]) # trung bình in trên kênh hình ảnh RGBprint ("Trung bình trên kênh Đọc:", R_mean) print ("Trung bình trên kênh Xanh lục:", G_mean) print ("Trung bình trên kênh Blue:", B_mean) 

Đầu ra

 Shape of Image Tensor:torch.> 

Ví dụ 2

Chúng tôi cũng có thể đọc hình ảnh bằng OpenCV . Hình ảnh được đọc bằng OpenCV thuộc loại numpy.ndarray . Ở đây, trong ví dụ này, chúng tôi sử dụng một cách khác để tính giá trị trung bình. Chúng tôi sử dụng imgTensor.mean () , các hoạt động cơ bản trên tensor. Hãy xem ví dụ sau.

 # Chương trình Python để tìm giá trị trung bình trên các kênh hình ảnh # nhập các thư viện cần thiết nhập torchimport cv2import torchvision.transforms dưới dạng biến đổi # Đọc hình ảnh đầu vào bằng cách sử dụng cv2 hoặc PILimg =cv2.imread ('opera.jpg') img =cv2.cvtColor (img, cv2.COLOR_BGR2RGB) # Xác định phép chuyển đổi để chuyển đổi hình ảnh thành PyTorch Tensortransform =biến đổi.ToTensor () # Chuyển đổi hình ảnh thành PyTorch Tensor (Hình ảnh căng thẳng) imgTensor =biến đổi (img) print ("Hình dạng của Tensor hình ảnh:\ n" , imgTensor.shape) # tính giá trị trung bình của Độ căng hình ảnh trên các kênh hình ảnh RGB # Cách khác để tính giá trị trung bìnhR_mean, G_mean, B_mean =imgTensor.mean (dim =[1,2]) # giá trị in trên kênh hình ảnh RGBprint (" Trung bình trên kênh Đọc:", R_mean) print (" Trung bình trên kênh Xanh:", G_mean) print (" Trung bình trên kênh Xanh:", B_mean) 

Đầu ra

 Shape of Image Tensor:torch.>