/
2638.nako3
206 lines (184 loc) · 9.57 KB
/
2638.nako3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
### [作品情報]
### 掲載URL=https://n3s.nadesi.com/id.php?2638
### タイトル=画像のエッジ検出
### 作者=shikiishi(user_id=0)
### ライセンス=CC0
### 説明=画像のエッジ(輪郭などの色が急激に変化している部分)を検出します。 縦エッジと横エッジ(隣の画素の色の差をもとめ、その差の大きい部分を黒く表示)と組み合わせて一つの画像を作ります。 〈使い方〉 1,画像の検出したい部分を、左上から右下までドラッグアンドドロップします。(1回のみ) 2,ボタン「①エッジ検出」ボタンを押します。(この段階では何も起きません) 3,ボタン「②2枚プレス」を押します。(ここでも、まだ何も起きません) 4,ボタン「③描画」を押します。 これで、絵の輪郭が浮かび上がると思います。
### 対象バージョン=3.4.22
### URL=
### 種類=wnako
### タグ=画像処理,画像編集,エッジ検出
### 更新日時=2023-10-22 12:38:52
###
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
仮エッジデータ1、2またはエッジデータは、透明度のみのデータとなります。1画素に付き、"0"か"1"。
色が滑らかに変化する画像などでは、感度が良すぎて黒くなります。絵などの輪郭を検出するのにはもってこいです!画像では、事前に色の階調(グラデーション)をおとす必要があるでしょう。
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
V=80#←エッジの検出度合い(感度)を変化できます。Vを小さくすると、感度は上がります。
a=0, b=0, 縦列=0, 横列=0
データ=[]
データ番号=[]
エッジデータ=[]
仮エッジデータ1=[]
仮エッジデータ2=[]
番号1=[]
番号2=[]
●(xywhの|xywhを)色データ取得
描画中コンテキストの「getImageData」をxywhでJSメソッド実行して、それ["data"]で戻る
ここまで
●画像点画描画とは
色データ=[]
Iを0から縦列まで繰り返す
Nを0から横列まで繰り返す
「{I}@{N}」をデータ番号へ代入
エッジデータ@データ番号を色データに代入
#色データを表示
「rgba({0},{0},{0},{色データ})」に線色設定
「rgba({0},{0},{0},{色データ})」に塗色設定
[-N*1+1000,-I*1+400]に0.5の円描画
ここまで
ここまで
ここまで
#[0,0]へ「https://n3s.nadesi.com/image.php?f=223.png」を画像描画。
#[0,0]へ「https://n3s.nadesi.com/image.php?f=221.png」を画像描画。
#画像URN=「https://n3s.nadesi.com/image.php?f=263.png」
#画像URN=「https://n3s.nadesi.com/image.php?f=264.jpg」
#画像URN=「https://n3s.nadesi.com/image.php?f=267.jpg」
画像URN=「https://n3s.nadesi.com/image.php?f=378.png」
画像URNの[0,0,900,750]から[0,0,700,600]へ画像部分描画
#F=[0,512,5]の値指定バー作成。
描画中キャンバスをマウス押した時には、
マウスXをaに代入
マウスYをbに代入
ここまで
描画中キャンバスをマウス離した時には、
マウスX-aを横列に代入
マウスY-bを縦列に代入
Iを0から縦列まで繰り返す
Nを0から横列まで繰り返す
[マウスX-N,マウスY-I,1,1]の色データ取得
それを「,」で区切る
Wに代入
Wの3を配列切り取り
それをKに代入
K/250をpに代入
「{I*1}@{N}」をINに代入
INをcに代入
IN+0.5をdに代入
データ@c=W
データ@d=p
#Wを表示############################
ここまで
ここまで
ここまで
「①エッジ記録(何も起きませんが、
ドラッグアンドドロップ後に押してください)」のボタン作成して記録に代入
改行作成。
「②2枚プレス(ここでも何も起きません。)」のボタン作成してプレスに代入
改行作成。
「③描画(やっと検出が表示されます。)」のボタン作成して提示に代入
改行作成。
#Fのテキスト取得してVに代入
記録をクリックした時には
Iを0から縦列まで繰り返す #=====================横エッジ検出
Nを0から横列まで繰り返す
もし縦列=Iでなければ
ぷちAデータ=[]
ぷちBデータ=[]
「{I*1}@{N}」を番号1に代入
データ@番号1をぷちAデータに代入#←1回目
「{I*1+1}@{N}」を番号2に代入
データ@番号2をぷちBデータに代入#←2回目
JC=0
(ぷちAデータ@0-ぷちBデータ@0)^2をぷち1に代入
(ぷちBデータ@0-ぷちAデータ@0)^2をぷち2に代入
(ぷちAデータ@1-ぷちBデータ@1)^2をぷち3に代入
(ぷちBデータ@1-ぷちAデータ@1)^2をぷち4に代入
(ぷちAデータ@2-ぷちBデータ@2)^2をぷち5に代入
(ぷちBデータ@2-ぷちAデータ@2)^2をぷち6に代入
(ぷちAデータ@3-ぷちBデータ@3)^2をぷち7に代入
(ぷちBデータ@3-ぷちAデータ@3)^2をぷち8に代入
もし(ぷち1>V)または(ぷち2>V)または(ぷち3>V)または(ぷち4>V)または(ぷち5>V)または(ぷち6>V)または(ぷち7>V)または(ぷち8>V)でなければ
JCに0を代入
「{I}@{N}」をデータ番号へ代入
仮エッジデータ1@データ番号=JC
違えば
JCに1を代入
「{I}@{N}」をデータ番号へ代入
仮エッジデータ1@データ番号=JC
ここまで
ここまで
ここまで
ここまで
Iを0から縦列まで繰り返す #====================縦エッジ検出
Nを0から横列まで繰り返す
もし横列=Nでなければ
ぷちAデータ=[]
ぷちBデータ=[]
「{I*1}@{N}」を番号1に代入
データ@番号1をぷちAデータに代入#←1回目
「{I*1}@{N+1}」を番号2に代入
データ@番号2をぷちBデータに代入#←2回目
JC=0
(ぷちAデータ@0-ぷちBデータ@0)^2をぷち1に代入
(ぷちBデータ@0-ぷちAデータ@0)^2をぷち2に代入
(ぷちAデータ@1-ぷちBデータ@1)^2をぷち3に代入
(ぷちBデータ@1-ぷちAデータ@1)^2をぷち4に代入
(ぷちAデータ@2-ぷちBデータ@2)^2をぷち5に代入
(ぷちBデータ@2-ぷちAデータ@2)^2をぷち6に代入
(ぷちAデータ@3-ぷちBデータ@3)^2をぷち7に代入
(ぷちBデータ@3-ぷちAデータ@3)^2をぷち8に代入
もし(ぷち1>V)または(ぷち2>V)または(ぷち3>V)または(ぷち4>V)または(ぷち5>V)または(ぷち6>V)または(ぷち7>V)または(ぷち8>V)でなければ
JCに0を代入
「{I}@{N}」をデータ番号へ代入
仮エッジデータ2@データ番号=JC
違えば
JCに1を代入
「{I}@{N}」をデータ番号へ代入
仮エッジデータ2@データ番号=JC
ここまで
ここまで
ここまで
ここまで
ここまで
プレスをクリックした時には#←「2枚プレス」ボタンを押すと、2枚の 縦,横エッジを重ね合わせます。
Iを0から縦列まで繰り返す
Nを0から横列まで繰り返す
「{I}@{N}」をデータ番号へ代入
仮エッジデータ1@データ番号をぷちAデータに代入
仮エッジデータ2@データ番号をぷちBデータに代入
もし(ぷちAデータ=1)または(ぷちBデータ=1)ならば
エッジデータ@データ番号=1
違えば
エッジデータ@データ番号=0
ここまで
ここまで
ここまで
ここまで
提示をクリックした時には
全描画クリア
画像点画描画
ここまで
#おわり