图像的随机翻转和RGB jittering/slight值变化?
Random flipping and RGB jittering/slight value change of image?
我想实现一个随机翻转并引入 RGB jitter/slight 值变化的小程序。
如果可能,将 jitter/slight 值更改限制为彩色图像中 3 个图层中的 2 个。
import cv2
import random
probofflip=0.5
probofRGBjit= 0.6
img=cv2.imread('path/to/img.png',1)
if (random.uniform(0,1)>1-probofflip):
img= cv2.flip(img,1)
if if (random.uniform(0,1)>1-probofRGBjit):
#function to jitter the RGB layers
#do something with resultant image.
如果你用的是cv2,那么numpy对这种操作还是很有帮助的。抖动是指移动一些像素吗?此示例仅处理轻微的值变化。
import cv2
import numpy as np
from pylab import *
img = cv2.imread( r'C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg' )
img = cv2.cvtColor(img, cv2.cv.CV_BGR2RGB) # cv2 defaul color code is BGR
h,w,c = img.shape # (768, 1024, 3)
noise = np.random.randint(0,50,(h, w)) # design jitter/noise here
zitter = np.zeros_like(img)
zitter[:,:,1] = noise
noise_added = cv2.add(img, zitter)
combined = np.vstack((img[:h/2,:,:], noise_added[h/2:,:,:]))
imshow(combined, interpolation='none')
如果你想将每个颜色通道移动一些像素,那么你可以使用np.roll。例如:
# shift each channel by 10 pixels
R = img[:,:,0]
G = img[:,:,1]
B = img[:,:,2]
RGBshifted = np.dstack( (
np.roll(R, 10, axis=0),
np.roll(G, 10, axis=1),
np.roll(B, -10, axis=0)
))
imshow(RGBshifted)
我想实现一个随机翻转并引入 RGB jitter/slight 值变化的小程序。
如果可能,将 jitter/slight 值更改限制为彩色图像中 3 个图层中的 2 个。
import cv2
import random
probofflip=0.5
probofRGBjit= 0.6
img=cv2.imread('path/to/img.png',1)
if (random.uniform(0,1)>1-probofflip):
img= cv2.flip(img,1)
if if (random.uniform(0,1)>1-probofRGBjit):
#function to jitter the RGB layers
#do something with resultant image.
如果你用的是cv2,那么numpy对这种操作还是很有帮助的。抖动是指移动一些像素吗?此示例仅处理轻微的值变化。
import cv2
import numpy as np
from pylab import *
img = cv2.imread( r'C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg' )
img = cv2.cvtColor(img, cv2.cv.CV_BGR2RGB) # cv2 defaul color code is BGR
h,w,c = img.shape # (768, 1024, 3)
noise = np.random.randint(0,50,(h, w)) # design jitter/noise here
zitter = np.zeros_like(img)
zitter[:,:,1] = noise
noise_added = cv2.add(img, zitter)
combined = np.vstack((img[:h/2,:,:], noise_added[h/2:,:,:]))
imshow(combined, interpolation='none')
如果你想将每个颜色通道移动一些像素,那么你可以使用np.roll。例如:
# shift each channel by 10 pixels
R = img[:,:,0]
G = img[:,:,1]
B = img[:,:,2]
RGBshifted = np.dstack( (
np.roll(R, 10, axis=0),
np.roll(G, 10, axis=1),
np.roll(B, -10, axis=0)
))
imshow(RGBshifted)