色調補正・エフェクト
画像を明るくしたりコントラストを上げたり、グローをかけてカッコよくしたりと、デザイナーや絵描きさんにはおなじみの工程ですね。
画像生成においては、AIにとって使いやすい画像にするための「下処理」としてこれらの機能を使うことがあります。
画像処理に関するカスタムノードは多くあり、もっと高度な処理もできるのですが、正直、慣れ親しんだペイントツールを使ったほうが楽だと感じる場面は多いです。
全てをComfyUIでやる必要はありません。
基本的な加工
Invert image ノード
RGB値を反転したネガ画像を生成します。

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 66,
"last_link_id": 95,
"nodes": [
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
94
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 65,
"type": "PreviewImage",
"pos": [
662.0453636363629,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 95
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 66,
"type": "ImageInvert",
"pos": [
457.13720223009113,
158.8181818181818
],
"size": [
140,
26
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 94
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
95
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageInvert"
},
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
94,
53,
0,
66,
0,
"IMAGE"
],
[
95,
66,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.8264462809917354,
"offset": [
26.272727272727238,
-58.81818181818181
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Image Sharpen ノード
輪郭をくっきりさせます。

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 67,
"last_link_id": 97,
"nodes": [
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
96
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 97
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 67,
"type": "ImageSharpen",
"pos": [
438.4181939656283,
158.8181818181818
],
"size": [
270,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 96
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
97
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageSharpen"
},
"widgets_values": [
20,
1,
1
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
96,
53,
0,
67,
0,
"IMAGE"
],
[
97,
67,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.9090909090909091,
"offset": [
218.77272727272722,
42.3818181818182
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Image Blur ノード
画像をぼかします。

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 68,
"last_link_id": 99,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 99
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
98
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 68,
"type": "ImageBlur",
"pos": [
442.1372022300911,
158.8181818181818
],
"size": [
262.5619834710744,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 98
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
99
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageBlur"
},
"widgets_values": [
20,
1
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
98,
53,
0,
68,
0,
"IMAGE"
],
[
99,
68,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
148.27272727272725,
58.18181818181819
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Image Quantize ノード
色数を減らします(ポスタリゼーション)。

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 69,
"last_link_id": 102,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 102
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 69,
"type": "ImageQuantize",
"pos": [
441.4181939656283,
158.8181818181818
],
"size": [
264,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
102
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageQuantize"
},
"widgets_values": [
3,
"none"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
101,
53,
0,
69,
0,
"IMAGE"
],
[
102,
69,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
84.27272727272724,
0.18181818181818699
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
ImageAddNoise ノード
画像にノイズを追加します。

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 71,
"last_link_id": 104,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 104
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
103
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example.png",
"image"
]
},
{
"id": 71,
"type": "ImageAddNoise",
"pos": [
438.4181939656283,
158.8181818181818
],
"size": [
270,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 103
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
104
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "ImageAddNoise"
},
"widgets_values": [
1234,
"fixed",
0.5
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
103,
53,
0,
71,
0,
"IMAGE"
],
[
104,
71,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
26.272727272727238,
-58.81818181818181
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
少しニッチなのですが、image2imageを行う際、あえてノイズを乗せることで低denoise設定でもディテールを増やすテクニックがあります。
cf. ピクセル画像にノイズを追加して、低denoiseでのimage2imageのディテールを増やす
モルフォロジー変換
聞き慣れない言葉かもしれませんが、主に白黒のマスク画像に対して処理を行うものです。
「線を太らせる(膨張)」「ノイズを除去する(収縮)」といった処理が可能です。

{
"id": "4868028c-000b-496e-b4e0-958cdd175f4a",
"revision": 0,
"last_node_id": 72,
"last_link_id": 106,
"nodes": [
{
"id": 65,
"type": "PreviewImage",
"pos": [
754.6073471074372,
158.8181818181818
],
"size": [
361.8754545454541,
401.1706611570247
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 106
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 53,
"type": "LoadImage",
"pos": [
73.72727272727276,
158.8181818181818
],
"size": [
318.5017680965466,
400.92742544483326
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
105
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"example_morphology.png",
"image"
]
},
{
"id": 72,
"type": "Morphology",
"pos": [
443.4958677685951,
158.8181818181818
],
"size": [
270,
82
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 105
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
106
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.71",
"Node name for S&R": "Morphology"
},
"widgets_values": [
"gradient",
5
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
105,
53,
0,
72,
0,
"IMAGE"
],
[
106,
72,
0,
65,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1.1000000000000003,
"offset": [
26.272727272727238,
-58.81818181818181
]
},
"frontendVersion": "1.30.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
本格的な色調補正(カスタムノード)
Photoshopで行うような、より実用的な画像編集機能を追加するカスタムノードは星の数ほどあります。 その中でも、基本的な機能が網羅されており、かつシンプルで使いやすいものを紹介します。
ComfyUI-Image-Effects

色相・彩度・明度の調整(HSV調整)や、トーンカーブのような調整、各種フィルターなど、人間が調整したいと思う機能の多くが含まれています。
詳しい機能一覧はリポジトリのドキュメントを確認してください。