ランダムな画像を生成し、各ピクセルにランダムな色を与える簡単なプログラムを作成しました。調整可能なイメージを生成する可能性は非常に低いことはわかっていますが、試してみたいと思います。
作業の最も長い部分は、画像が本当に何かであるかどうかを確認することです。また、生成された画像のほとんどは、多数の個々のピクセルを含むカラフルな画像のフィールドにすぎないこともわかりました。そのため、画像内の類似した色の領域を検出するための疑似コードのアルゴリズムを求めたいと思います。意味のある画像を見つける最も簡単な方法は、ランダムなピクセル画像をすべてフィルタリングすることだと思います。完璧ではありませんが、役立つと思います。誰かがこのタスクに役立つ別の種類のフィルタリング アルゴリズムを提案できれば、私もそれを高く評価します。
(編集)
これを明確にするために、私の説明が十分に明確でない場合に備えて、いくつかの画像を示します。
これは私が得ている種類の画像です。基本的には「カラフルなノイズ」と表現します。ご覧のとおり、すべてのピクセルは、類似した色領域にグループ化されずに個別に分散されており、オブジェクトの形状や何かと調和するものを巧みに作成しています。
ここでは、従来のイメージ、「調整可能な」イメージを見ることができます。テニスボールを持って草の上に横たわっている犬がはっきりと見えます。この写真を注意深く観察すると、他の写真とはっきりと区別できます。なぜなら、私たちが区別できる類似の色の集合があるからです (犬、白い部分、草、濃い緑の部分、テニス ボール、明るい部分など)。緑の領域)。
私が正確に望んでいるのは、HDに保存する前に「ピクセル」画像を削除し、色の分裂のある画像のみを保存することです。前に言ったように、このアイデアは、これらのランダムに生成された画像をフィルタリングするために必要だった最善のものですが、誰かが別のより効率的な方法を提案してくれたら、本当に感謝します.
(編集)
わかりました、この記事は長くなりすぎていると思います...誰かが見たいのであれば、私が書いたプログラムのコードがここにあります。それは本当に簡単です。Pygameを使用してPythonでプログラムしました。これが最も効率的な方法ではないことはわかっていますが、それは承知しています。問題は、私はこの分野ではまったく初心者であり、他の言語やモジュールでこれを行う別の方法を本当に知らないということです。多分あなたもこれで私を助けることができます...私は知らない、多分コードをC++に翻訳しますか? 同じ投稿で多くの質問を求めているように感じますが、何度も言ったように、どんな助けも大歓迎です.
import pygame, random
pygame.init()
#lots of printed text statements here
imageX = int(input("Enter the widht of the image you want to produce: "))
imageY = int(input("Enter the height of the image you want to produce: "))
maxImages = int(input("Enter the maximun image amoungt you want to produce: "))
maxMem = int(input("Enter the maximun data you want to produce (MB, only works with 800x600 images): "))
maxPPS = int(input("Enter the maximun image amoungt you want to produce each second: "))
firstSeed = int(input("Enter the first seed you want to use: "))
print("\n\n\n\n")
seed = firstSeed
clock = pygame.time.Clock()
images = 0
keepGoing = True
while keepGoing:
#seed
random.seed(seed)
#PPS
clock.tick(maxPPS)
#surface
image = pygame.Surface((imageX,imageY))
#generation
for x in range(imageX):
for y in range(imageY):
red = random.randint(0,255)
green = random.randint(0,255)
blue = random.randint(0,255)
image.set_at((x,y),(red,green,blue))
#save
pygame.image.save(image,str(seed)+".png")
#update parameters
seed += 1
images += 1
#print seed
print(seed - 1)
#check end
if images >= maxImages:
keepGoing = False
elif (images * 1.37) >= maxMem:
keepGoing = False
pygame.event.pump()
print("\n\nThis is the last seed that was used: " + str(seed - 1))
input("\nPress Enter to exit")