2016-08-16 81 views
0

我有一個尺寸的圖像(1200 X 1000),我正在創建多個補丁(使用256 X 256的滑動窗口,跨度爲10)。我爲卷積神經網絡提供補丁的最終目標。我希望將一些鹽和胡椒噪聲引入到圖像中生成的補丁上。該圖像只是一個網頁的截圖。現在我想確保我添加的鹽和胡椒噪音不會落在所生成的修補程序的HTML對象區域中。對於例如假設我在補丁中有單選按鈕,文本框,選擇下拉列表和按鈕,我需要確保生成的噪聲不應該落在補丁中的這些對象上。除此之外,它可能落在補丁中的任何其他區域內。如何使用python將鹽和胡椒噪聲應用於圖像的特定部分?

我已經寫代碼,椒鹽噪聲如下:

import numpy as np 
    import os 
    import cv2 
    def noisy(image): 
     row,col,ch = image.shape 
     s_vs_p = 0.5 
     amount = 0.004 
     out = image 
     # Salt mode 
     num_salt = np.ceil(amount * image.size * s_vs_p) 
     coords = [np.random.randint(0, i - 1, int(num_salt)) 
      for i in image.shape] 
     out[coords] = 1 

     # Pepper mode 
     num_pepper = np.ceil(amount* image.size * (1. - s_vs_p)) 
     coords = [np.random.randint(0, i - 1, int(num_pepper)) 
      for i in image.shape] 
     out[coords] = 0 
    return out 

我有HTML對象的座標在JSON文件,並已閱讀並存儲到我的程序對象的列表。它包含HTML對象的X座標,Y座標,寬度,高度和類型。

我已經創建了一個標籤矩陣是具有5類的原始圖像的副本:

0:它是默認類值(即是不包括HTML對象的圖像的區域) 1:它是

2存儲在矩陣爲文本框圖像中的值:它是

3存儲在矩陣按鈕圖像中的值:這是存儲在矩陣單選按鈕在該值圖片

4:它是存儲在矩陣中用於在圖像中選擇的值

因此,每個這些值都將代表我的標籤矩陣中的屏幕截圖圖像的特定HTML對象。

現在,使用標籤矩陣,我如何確保鹽和胡椒噪音不會落入創建的補丁中的HTML對象區域,這是我的挑戰。

+0

我修改我的答案,希望這是你想要的東西 –

回答

3

這是一種粗糙的方法,但爲什麼不將噪音均勻地應用到原始圖片的副本上,然後將每個對象的補丁從原始圖像複製回該噪聲圖像的頂部?你改寫你的問題

基本上

編輯後,你需要測試coords是否落在一個地方,你的面具(你的「標籤矩陣」)等於0 這裏是你能做什麼(或東西本着這種精神,我不能說我的代碼是很漂亮):

out = np.zeros((26,26)) 
# salt coordinates 
coords = [np.random.randint(0,26,50), np.random.randint(0,26,50)] 

# mask - 0 are regions where salt can be applied, otherwise don't touch 
mask = np.zeros(out.shape) 
mask[:13,:13] = 1 
mask[-13:,-13:] = 2 

# where does the salt coordinates land on the mask 
a = mask[coords] 

# find points where mask is 0 
b, = np.nonzero(a==0) 

# copy from coords only where mask is 0 
valid_coords = np.array(coords)[:,b] 

# apply salt on valid coordinates 
out[valid_coords.tolist()]=1 

enter image description here

+0

非常感謝!解決了我手邊的問題。 :) – shripati007

相關問題